从对象内访问属性

时间:2018-05-08 17:03:52

标签: java oop

什么是"纯粹主义者"或"纠正"从不是getter / setter方法的对象方法中访问对象属性的方法?

String property = this.property;

或者你会这样做:

String property = this.getProperty();

3 个答案:

答案 0 :(得分:1)

没有正确的方法。这完全取决于具体情况:

  • 使用this.property的主要原因是它不需要getter和setter方法。这减少了代码大小,这本身是有益的,因为它降低了调试和维护的总体成本。

  • 使用getProperty()的主要原因是它允许您隐藏其余代码的数据结构重构。例如,假设您出于某种原因决定将property字段移动到嵌入对象foo。然后,您可以轻松地重新定义getProperty(),而不会影响任何其他代码:

    Object getProperty() { return foo.property; }

    如果您正在使用JPA等框架,那么使用getter和setter也可以获得性能优势,因为JPA框架可以对这些进行优化,否则就无法实现。

答案 1 :(得分:0)

使用this.property

该属性在全球范围内定义,因此您可能应该在整个班级中直接引用它。

除非......

getProperty()方法以某种方式转换属性,并且访问此属性的唯一预期方法是通过该转换。

通常,getters可以访问类外的属性,因此它们实际上只能在该上下文中使用。

答案 2 :(得分:0)

这取决于用例:

如果您希望该方法查看/获取类'(实例)

  • 其属性的内部表示然后使用前者。
  • 外部表示属性以及提取属性时的类(实例)行为然后使用后者。