具有getter和setter的java类属性,这不应该很常见吗

时间:2018-10-26 22:36:16

标签: java generics getter-setter

我专门从事Java开发已有5年以上。

现在,总是在我开始编写新类或代码时,首先要定义类的属性。因此,我每次都需要按Eclipse生成getter和setter方法。那是更简洁的代码,最终更容易理解。

但是我喜欢抽象思考以及使用OOP和泛型。 因此,或者是由于人们需要使用Java原语的特定原因,或者我们可以在Java中创建这样的类以始终具有getter和setter并仍然在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 个答案:

答案 0 :(得分:1)

我认为您仅应在必要时使用泛型。

首先,出于可读性考虑。

第二,您可以快速解决Java Type Erasure问题(see)。因此,在比较类(以及使用适当的.equals / .hashcode方法)时,您可能会遇到很多问题。我看到了一些困难的情况,其中唯一的解决方案是使用不可读,复杂且性能成本高的反射...

如建议的那样,您可以使用Lombok来抽象getters / setters。