Свойства класса java с getter & setter, разве это не должно быть распространено
Я занимаюсь разработкой на Java более 5 лет.
Теперь всегда, когда я начинаю писать новый класс или код, я начинаю с определения свойств моего класса. Поэтому мне нужно будет каждый раз нажимать кнопку "Затмение и получение" для моего разочарования. И это более чистый код, и в конце концов он становится более понятным.
Но мне нравится думать абстрактно и использовать ООП и дженерики. Таким образом, существует либо конкретная причина, по которой людям нужно использовать примитивы Java, либо мы можем просто создать такой класс в Java, чтобы всегда иметь метод получения и установки и при этом оставаться в пределах обычного использования членов класса Java:
public class Property<Type> implements Getter<Type>,Setter<Type>{
protected Type value;
public Property() {
}
@Override
public <T extends Type> void set(T value) {
this.value = value;
}
@Override
public Type get() {
return value;
}
public String toString() {
return value.toString();
}
}
Вы все еще можете использовать модификаторы, чтобы ограничить доступ к переменным, которые вы определяете. Вы по-прежнему будете использовать то же объявление переменных, что и в:
Class test{
private Property<Number> priv_floatProperty = new Property<Float>();
protected Property<Number> prot_floatProperty = new Property<Float>();
public Property<Number> publ_floatProperty = new Property<Float>();
}
Просто хотел задать этот вопрос, чтобы увидеть, что другие люди думают об этом коде и пишут ваши классы таким образом. Я действительно надеюсь, что смогу получить отзывы об этом коде и теории дизайна классов в Java,
1 ответ
Я думаю, что вы должны использовать дженерики только в случае необходимости.
Во-первых, для удобства чтения.
Во-вторых, вы можете быстро решить проблему стирания Java-типа ( см.). Таким образом, вы можете столкнуться с множеством проблем при сравнении классов (и при использовании соответствующих методов.equals /.hashcode). Я видел несколько сложных случаев, когда единственным решением было использование нечитаемых, сложных и отражений производительности и затрат...
Как и предполагалось, вы можете использовать Lombok для создания абстракции геттеров / сеттеров.