在 C# 中存在一种称为属性的成员类型。这使您可以轻松简单地定义私有字段并提供简单或复杂的 getter 和 setter,同时通过不必定义整个方法来节省空间。Java 没有这样的东西,据我所知,普遍的共识是吸收它并为私有变量定义完整的 getter 和 setter 方法。
目前,我一直在玩弄以下课程:
public class Property<T> {
private T value = null;
public Property(){}
public Property(T initialValue){
value = initialValue;
}
public T get(){
return value;
}
public void set(T newValue){
value = newValue;
}
}
通过这个实现,您可以定义只需要 getter 和 setter 的简单属性:
final Property<String> name = new Property<>("Dog");
...
public double seconds;
public final Property<Double> Hours = new Property<Double>(){
@Override
public Double get() {
return seconds/3600;
}
@Override
public void set(Double newValue) {
seconds = newValue * 3600;
}
};
...
这种解决方案的优缺点是什么?