我读了Joshua Bloch的"Effective Java",并从我们的应用程序中删除了"Constant Interface anti-pattern".诀窍是使用非实例化的util类,其构造函数是私有的,并将所有常量定义为'public static final'
我必须扩展这个常量的util类.我只能在将构造函数更改为protected时执行此操作.
有人可以建议一个更好的方法.
public class Constants {
private Constants () {} // Prevent instantiation
public static final String MyString = "MyString";
}
public class MyConstants extends Constants {
private MyConstants () {} // Compiler error : Implicit super constructor Constants() is not visible.
public static final String MySecondString = "MySecondString";
}
Run Code Online (Sandbox Code Playgroud)
通常不应该扩展这些常量类.你能否为我们提供一个更具体的例子来说明你想要做什么?
通常,您希望在相关时将常量分组在一起,例如,数学常量或特定功能组件的配置参数名称.
如果常量确实相关,那么你是否可以将它们添加到原始类中?或者,您是否有任何理由不能为常量创建单独的类?