У меня есть следующий сокращенный класс:Как установить конечное поле через сеттер?
public class Employee {
private final float pointPosition;
public Employee(float pointPosition) {
this.pointPosition = pointPosition;
}
}
Я хотел бы сделать проверку на pointPosition
быть передаваемым в constuctor, чтобы убедиться, что она не превышает 1,0.
Я попытался переместить назначение на свой собственный метод setter, который выполняет проверку предварительных условий, но, очевидно, это дало мне ошибку, так как я переназначаю поле final
вне конструктора.
Я мог бы изменить конструктор, чтобы что-то вроде:
public Employee(float newPointPosition) {
verifyPointPosition(newPointPosition); //Will throw
this.pointPosition = pointPosition;
}
Но я бы предпочел, чтобы все это завернутый аккуратно в его собственном методе.
Какие у меня варианты?
Были ли проверки метод просто возвращает входные данные. Я делаю это все время в C++ для членов const – Bwmat
@Bwmat Рассмотрите возможность превратить свой комментарий в ответ. –
@Bwmat Хорошая точка. – Carcigenicate