Я бы поспорил по этому поводу:
- Почему именно ваш метод возвращает несколько значений? О каком единстве мы говорим - должны ли эти значения быть полями в одном классе, или они просто по совпадению возвращаются одним и тем же методом, но никак не связаны? Если это последнее, вы можете рассмотреть возможность разделения метода на два метода. Изменить: используйте свое мнение здесь; иногда тип «случайной» сплоченности может быть лучшим вариантом. Другой вариант - использовать пару или кортеж, хотя в ООП они обычно не видны в общедоступных API-интерфейсах (некоторые заметные исключения - это стандартные коллекции и т. Д.).
- Если значения заслуживают формирования класса, я бы, вероятно, не советовал использовать внутренний класс. Внутренние классы обычно используются как внутренние детали реализации, которые скрыты снаружи. Есть ли какая-то причина, по которой этот результат сам по себе не должен быть «полноценным» классом?
- Какие операции применимы к этому новому классу, кроме хранения данных? В объектно-ориентированном проектировании вы хотите, чтобы связанное поведение было близко к соответствующим данным (что, похоже, также является вашим намерением). Должен ли метод, на который вы ссылаетесь, жить не в этом классе?
Подводя итог, я хотел бы посмотреть, смогу ли я превратить этот «объект данных» в полноценный класс с данными и поведением. В качестве дополнительного комментария вы можете сделать класс неизменным, поскольку его состояние устанавливается один раз. Если сделать его неизменным, это поможет предотвратить его неправильную настройку или изменение позже (скажем, кто-то установит одно из полей в null и передаст его).
Редактировать: Как правильно отмечает Паткос Чаба, применяемый здесь принцип - это принцип единой ответственности ( SRP ) - класс, который вы пытаетесь создать, должен действительно иметь одну ответственность (определяемую как причина для изменения ). Это руководство по проектированию должно помочь вам определить, принадлежат ли ваши два поля одному классу или нет. Если придерживаться примера Википедии, ваш класс может рассматриваться как тип отчета, и в этом случае он соответствует SRP, но его сложно комментировать без дополнительной информации.
BitInteger[] java.math.BigInteger.divideAndRemainder(BitInteger val)
. Он возвращает 2 целых числа в качестве возвращаемых значений в массиве.