Java对象获取器和设置器的良好实践

时间:2018-08-09 11:50:03

标签: java object setter getter

在某些情况下,我对如何正确使用getter和setter感到有些困惑。 例如,假设有一个名为Car的类。

Car有一个maintenanceBook,并且这是有关Car的一些信息:

class Car() {
    MaintenanceBook maintenanceBook;
}

class MaintenanceBook() {
    String date;
    String lastCall;
}

访问maintenanceBook的不同参数的最佳实践是什么:

  • 将所有参数设置为public,然后使用car.maintenanceBook.date或...
  • 实现getter并使用car.getMaintenanceBook().getDate();吗?

2 个答案:

答案 0 :(得分:3)

您应该首选:

  • 公共参数上的字母和setter-这些元素允许附加功能,就像验证一样。
  • 如果可能的话,仅使用带有getter的构造函数设置最终参数-迈向不变性。

此外,我通常更喜欢打印机而不是吸气剂。而且,在创建类时立即生成getter / setter并不是一个好主意,只有在需要时才生成(例如,Hibernate映射是一个例外)。

答案 1 :(得分:1)

这与java self无关。它涉及封装概念,该概念在所有面向对象的语言中都是至关重要的。 (https://en.wikipedia.org/wiki/Encapsulation_(computer_programming)

因此,根据这个基本概念,car.getMaintenanceBook().getDate()是正确的解决方案。