在java中扩展不可实例化的类

Nay*_*ayn 5 java

我读了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)

Jac*_*eow 7

通常不应该扩展这些常量类.你能否为我们提供一个更具体的例子来说明你想要做什么?

通常,您希望在相关时将常量分组在一起,例如,数学常量或特定功能组件的配置参数名称.

如果常量确实相关,那么你是否可以将它们添加到原始类中?或者,您是否有任何理由不能为常量创建单独的类?