Java类中的final可选成员变量

时间:2013-11-25 09:58:44

标签: java inheritance constructor pmd

我有一个场景,在某些情况下,在类级声明的一些最终变量是可选的。

这意味着我有不同的构造函数。其中一些必须使用空值保留成员变量。

由于我已将变量声明为final,因此我不得不在构造函数中初始化它们。所以我必须在构造函数中添加 var = null; 语句。

但明确地将变量分配给null被认为是一种不好的做法,PMD等工具会将其视为违规行为。 (在PMD中有争议的规则。但是不要将其关闭,因为我不希望在我的代码的其他区域中实现空赋值)

实现这一目标的任何其他建议或良好做法?

2 个答案:

答案 0 :(得分:0)

为实例变量分配默认值(如果是自定义对象,则为null)。

所以除非你真的为你的最终变量分配一些值,为什么还要为空分配烦恼呢?

正如用户在上面的评论中指出的那样,对最终变量不利。那么可以做什么来定义一个no-arg构造函数,所有的final值都设置为null。

现在,在各个arg构造函数中,通过使用this()作为第一个语句来调用此默认构造函数。然后,您可以根据传递的参数分配值。

答案 1 :(得分:0)

您可以使用构造函数链接,将null传递给实例中未使用的值。 (如果我们讨论继承,你可以使用超级构造函数,或者在同一个类中使用不同的构造函数。) 毕竟我会重新考虑你的类的设计,例如将可选部分提取到另一个类。