Java getter / setter字段方法的缩写形式

时间:2016-06-29 10:01:31

标签: java

我很好奇是否存在对象的getter / setter方法的缩写形式

SimpleObject oSimple = new SimpleObject();
oSimple.setCounterValue(oSimple.getCounterValue() + 1);

类似于简单数据类型

int counter = 0;
counter += 2;

信息

需要getter / setter方法。

加成

如果没有支持这个想法的语言功能,那么在良好和干净的代码环境中处理它的最方便的方法是什么?

5 个答案:

答案 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()。