Java POJO中的字段,变量,属性和属性有什么区别?

问题

在引用具有getter / setter的Java POJO的内部私有变量时,我使用了以下术语:

  • 变量
  • 属性
  • 财产

以上是否有任何区别?如果是这样,使用的正确术语是什么?持有此实体时是否有不同的术语?


#1 热门回答(99 赞)

从这里:http://docs.oracle.com/javase/tutorial/information/glossary.html

  • field类的数据成员。除非另有说明,否则字段不是静态的。
  • property用户可以设置的对象的特征,例如窗口的颜色。
  • 属性未在上述词汇表中列出
  • 变量由标识符命名的数据项。每个变量都有一个类型,例如int或Object,以及一个范围。另请参见类变量,实例变量,局部变量。

#2 热门回答(75 赞)

就在这里。

变量可以是本地,字段或常量(尽管这在技术上是错误的)。它像属性一样模糊。另外,你应该知道有些人喜欢调用最终非静态(本地或实例)变量

""。这可能来自Scala等新兴的JVM FP语言。

字段通常是实例类上的私有变量。这并不意味着有一个吸气剂和一个二传手。

属性是一个含糊的术语。它很容易与XML或Java命名API混淆。尽量避免使用该术语。

属性是getter和setter组合。
以下一些例子

public class Variables {

    //Constant
    public final static String MY_VARIABLE = "that was a lot for a constant";

    //Value
    final String dontChangeMeBro = "my god that is still long for a val";

    //Field
    protected String flipMe = "wee!!!";

    //Property
    private String ifYouThoughtTheConstantWasVerboseHaHa;

    //Still the property
    public String getIfYouThoughtTheConstantWasVerboseHaHa() {
        return ifYouThoughtTheConstantWasVerboseHaHa;
    }

    //And now the setter
    public void setIfYouThoughtTheConstantWasVerboseHaHa(String ifYouThoughtTheConstantWasVerboseHaHa) {
        this.ifYouThoughtTheConstantWasVerboseHaHa = ifYouThoughtTheConstantWasVerboseHaHa;
    }

}

还有更多的组合,但我的手指累了:)


#3 热门回答(6 赞)

Dietel和Dietel有一个很好的解释字段与变量的方法。

"一个类的静态变量和实例变量一起称为其字段。"(第6.3节)

"只有当变量需要在类的多个方法中使用或者程序应该在对类的方法的调用之间保存它们的值时,才应该将变量声明为字段。"(第6.4节)

所以类的字段是它的静态或实例变量 - 即用类范围声明。

参考 - Dietel P.,Dietel,H。 - Java™如何编程(早期对象),第十版(2014)