在引用具有getter/setter的Java POJO的内部私有变量时,我使用了以下术语:
上面有什么区别吗?如果是这样,使用的正确术语是什么?持有此实体时是否有不同的术语?
jah*_*roy 114
从这里:http://docs.oracle.com/javase/tutorial/information/glossary.html
领域
属性
属性
变量
Ada*_*ent 85
就在这里.
变量可以是本地,字段或常量(尽管这在技术上是错误的).它像属性一样模糊.此外,您应该知道有些人喜欢调用最终的非静态(本地或实例)变量
" 价值观 ".这可能来自Scala等新兴的JVM FP语言.
Field通常是实例类的私有变量.这并不意味着有一个吸气剂和一个二传手.
属性是一个模糊的术语.它很容易与XML或Java Naming 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;
}
}
Run Code Online (Sandbox Code Playgroud)
有更多的组合,但我的手指累了:)
如果您的问题是通过使用JAXB提示并想要选择正确的XMLAccessType,那么我有同样的问题.JAXB Javadoc说"字段"是一个非静态的非瞬态实例变量."属性"具有getter/setter对(因此它应该是私有变量)."公共成员"是公开的,因此可能是一个常数.同样在JAXB中,"属性"指的是XML元素的一部分,如<myElement myAttribute="first">hello world</myElement>.
通常,Java"属性"似乎可以定义为至少具有getter或其他一些允许您获取其值的公共方法的字段.有些人还说房产需要有一个二传手.对于这样的定义,上下文就是一切.
Dietel和Dietel有一个很好的解释字段与变量的方法.
"一个类的静态变量和实例变量一起被称为其字段."(第6.3节)
"只有当变量需要在类的多个方法中使用时,或者程序应该在对类的方法的调用之间保存它们的值时,才应将变量声明为字段."(第6.4节)
所以类的字段是它的静态或实例变量 - 即用类范围声明.
参考 - Dietel P.,Dietel,H. - Java™如何编程(早期对象),第十版(2014)
如果您从 Hibernate 中得到线索:
\n\nHibernate 通过其字段读取/写入对象的状态。\nHibernate 还将 Java Bean 样式属性映射到 DB Schema。\nHibernate 访问用于加载/保存对象的字段。\n如果映射是通过属性完成的,则 hibernate 使用 getter 和 setter。
\n\n封装的区别在于字段有 getter/setter,它被称为属性,有了它,我们在 setMethod 中隐藏该属性的底层数据结构,我们可以防止 setter 内部发生不必要的更改。封装所代表的一切...
\n\n字段在使用之前必须进行声明和初始化。主要供班级内部使用。
\n\n属性可以通过 setter 更改,并通过 getter 公开。这里的字段价格有 getter/setter,所以它是属性。
\n\nclass Car{\n private double price;\n public double getPrice() {\xe2\x80\xa6};\n private void setPrice(double newPrice) {\xe2\x80\xa6};\n}\n\n<class name="Car" \xe2\x80\xa6>\n<property name="price" column="PRICE"/>\n</class>\nRun Code Online (Sandbox Code Playgroud)\n\n类似地使用fields,[在 hibernate 中,推荐使用 fields 进行 MAP 的方式,其中 private int id; 被注释为@Id,但使用Property你有更多的控制权]
\n\nclass Car{\n private double price;\n}\n<class name="Car">\n<property name=" price" column="PRICE" access="field"/>\n</class>\nRun Code Online (Sandbox Code Playgroud)\n\nJava 文档说:\nField 是类的数据成员。字段是非静态、非瞬态实例变量。\n字段通常是实例类上的私有变量。
\n| 归档时间: |
|
| 查看次数: |
99097 次 |
| 最近记录: |