初始化类时,在构造函数中使用 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/