静态是否是私有字符串的有用修饰符

时间:2019-07-08 08:56:52

标签: java string static variable-declaration

在我们的团队中,我们进行了简短的讨论,即在类中声明为“私有静态最终”的字段是否比仅声明为“私有最终”有任何优势。 例如,如果我的课上有以下一行:

private static final String a = "a String";

这真的比仅仅这样声明要好:

private final String a = "a String";

如果它将是可以在此类之外使用的变量,则将其声明为静态是完全有意义的。但是因为它是私有的,所以我看到除了静态变量只创建一次并在所有对象中引用之外,没有任何真正的优势。我们有很多测试,这些测试定义了这样的变量。这些测试仅在系统启动时运行一次,此后不再需要。除此之外,还有什么我想念的吗?

1 个答案:

答案 0 :(得分:-1)

简而言之:

当您只需要设置一次值时使用private final,但是该类的每个实例的值都必须不同。

当类的所有实例都需要访问一个不变的值时,可以使用private static final。这对于避免魔术字符串/数字并增强可读性很有用,尤其是当您的值是更长的字符串时。如果您开始定义太多这些,请考虑将它们移至配置文件。

因此将static与final和private结合使用当然是有用的,但是static通常需要仔细,故意使用。不要只是把它拍在身上。相反,您的默认操作应该是分析您是否需要它,并相应地实施。