我很好奇是否存在对象的getter / setter方法的缩写形式
SimpleObject oSimple = new SimpleObject();
oSimple.setCounterValue(oSimple.getCounterValue() + 1);
类似于简单数据类型
int counter = 0;
counter += 2;
信息
需要getter / setter方法。
加成
如果没有支持这个想法的语言功能,那么在良好和干净的代码环境中处理它的最方便的方法是什么?
答案 0 :(得分:2)
你有C#背景,我可以想象; - )
在Java中是不可能的(除了不太相同的解决方案,例如拥有公共属性等)。与运算符重载相同,这也可以解决您的问题。
但是看看http://www.eclipse.org/xtend/,它是一种类似于Java的JVM语言,支持运算符重载和其他一些漂亮的东西。
答案 1 :(得分:1)
对于这种情况,我创建了注释
/**
* Annotation for PropertiesContainer class (that has field without getter and setter)
* This class look like as class with Properties in C#
*
*/
public @interface PropertiesContainer {
}
添加添加到任何类(注释显示不是错误)
@PropertiesContainer // class without getter and setter
public Class SomeObject{
public int counter;
}
只需使用:
oSimple.counter++;
答案 2 :(得分:1)
正如geert3所说,没有直接访问该属性的Java中的setter / getters没有捷径。
在您的情况下,您的SimpleObject
- 类应该只有一个方法increaseCounter()
,可能只有increaseCounterBy(int add)
(或只是add(int a)
)。
答案 3 :(得分:0)
如果value
在设置时没有检查任何错误值/执行代码,您可以直接引用变量来解决它:
public Class SomeObject{
public int value;
}
public Class Main{
public static void main(String[] args){
SomeObject o = new SomeObject();
o.value += 1;
}
}
答案 4 :(得分:0)
如果您给出的示例是您想要做的(每次创建一个新对象时递增并指定索引),那么通常的做法是使用静态变量作为计数器,使用特定索引的局部变量
class SomeObject {
static int objectCounter;
private int index;
public SomeObject() {
index = objectCounter++;
// additional constructor code
}
}
如果你想为一个变量添加一个数字,我考虑制作一个单独的方法,而不是尝试重写set(),或者如果它有意义,将它作为代码的一部分set()。