Во время кодирования, я столкнулся с следующей ситуацией:Расчет членов класса
У меня есть класс, давайте назовем его C
. Он имеет атрибут A
произвольного типа, который должен быть рассчитан первым:
public class C {
private int A;
public C(...) {
...
}
public void calculateA() {
A = 42;
}
public int getA() {
}
}
Мой вопрос теперь в том, как реализовать сорбент getA
правильно. Должен ли я проверить, определено ли A и иначе ли исключение?
Или я должен просто позвонить calculateA
в getA
, если он не установлен?
Что является лучшим выбором для такого рода проблем?
Edit: Хорошо, я дал плохой пример. A
не может быть вычислен в конструкторе, потому что метод вычисления вернет новый экземпляр того же класса, что приведет к бесконечной рекурсии.
Почему бы не установить значение по умолчанию для A в вашем конструкторе? – Shaded
Зависит. Но если это целое число, как вы будете отличать его от неустановленного значения? Недопустимое значение '0'? Это долгосрочный расчет (например, действительно ли это имеет значение)? –
Это будет иметь смысл для этого примера. Но в моем случае нет значения по умолчанию, которое имеет смысл. – George