java - 我应该在构造函数中使用 getter 和 setter 吗?

标签 java

初始化类时,在构造函数中使用 getter 和 setter 函数是一种好习惯吗?

或者直接设置变量是一种好习惯,因为构造函数可以被认为是一种修改器?

最佳答案

您不应该从构造函数中调用 getter 和 setter。

构造函数构造定义它的特定类。初始化字段是它的工作,因为 - 好吧 - 没有其他东西可以。

保证初始化字段的唯一方法是分配它们。如果你调用一个 setter,它有可能被覆盖并且它可能会做其他事情。它可能会调用尚未初始化的子类中的方法。

如果您只是从同一个类中获取一个字段,那么调用 getter 也是一个坏主意。如果它已在父类(super class)中声明,您可能会证明它是合理的;如果你需要从子类中的父类(super class)获取数据,你将不得不调用getter(除非它被保护)。如果您需要在构造期间将数据从子类传递到父类(super class),您应该将其作为参数传递。但这是与您所描述的不同的用例,并且子类可能没有您自己的字段与 setter/getter 相对应。

如果您有任何“特殊”初始化代码,请将其放在一个单独的私有(private)方法中,并分别从构造函数和 setter 中调用它。

关于java - 我应该在构造函数中使用 getter 和 setter 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290861/

相关文章:

java - java中还有另一种方法来执行repaint()吗?

java - Spring Boot 总是显示 @Value 注解的值为 null

java - 最后一个 block 使用 CipherInputStream/CipherOutputStream 不完整,即使使用填充 AES/CBC/PKCS5Padding

Java原子lazySet

java - 如何使用 java 或 javascript 读取 Ical Feed

JAVA:JFrame 变为黑色后的屏幕截图

java - 计算2字节数组的欧氏距离java

Java 匹配器甚至不匹配循环中的 find()

java - KSQL : Could I use threads in KSQL UDF functions to speed up the process?

java - WebView 电话 : open chooser telephone or sms