有没有人知道是否有计划为类变量添加隐式getter和setter?
我正在考虑当前的Scala代码。类似下面的内容,如果你没有定义一个getter / setter,它会使用该值,但如果你为它使用的值定义一个getter / setter而不是直接变量调用。
class A{
int value = 3;
}
class B{
int value = 3;
public int value(){
return value;
}
}
// in some method
A a = new A();
System.out.println(a.value);
B b = new B();
System.out.println(b.value); // <-- no () for accessing value even though it uses the getter
答案 0 :(得分:8)
不是Java本身,但有Project Lombok
答案 1 :(得分:2)
前言:也许我错了,但问题可能更适合java平台用户/开发列表,例如http://www.oracle.com/technetwork/java/javase/community/index.html上的那些
我想你会在那里得到更有意义的答案,而不是猜测。
我自己对这个主题的看法是, JavaBean 模型已经过于成熟,无法承认任何重大的向后兼容性变化,而且java封装模型基于隐藏字段的概念访问并提供访问者/ mutators 。
如果您只想公开会员,您只需将它们公开。
将字段转换为自动 accessor / mutator 方法对语言来说是一个很大的变化,并且可能会产生很多混乱,但收效甚微。
为了uniform access principle,你还应该考虑scala选择意味着一种完全不同的成员访问方法。
答案 2 :(得分:0)
一个简单的getter返回一个字段值。但是,getter也可以返回操作的结果:
public boolean isError()
{
return errorList.size() > 0;
}
类似地,setter可能会执行其他操作:
public void setName(String name)
{
this.name = name;
this.sortName = name.toLowerCase();
}
因此,除了bean范式之外,为了保持一致性,应该使用getter / setter方法,而不是直接进行字段访问。
答案 3 :(得分:0)
Java 14(LTS发行版)具有记录,但是您需要编译其他选项才能使其工作。记录为构造函数的参数提供了获取方法,旨在解决早期版本中固有的其他一些问题。