ser*_*erg 6 java inheritance class
有没有办法强制Java中的类具有公共静态最终字段(通过接口或抽象类)?或者至少只是一个公共领域?
我需要以某种方式确定一组课程
public static final String TYPE = "...";
在他们中.
不,你不能.
您只能强制它们使用非静态getter方法,该方法将为每个子类返回适当的值:
public abstract String getType();
Run Code Online (Sandbox Code Playgroud)
如果你需要将某个子类的每个子类映射到一个值,而不需要实例化它,你可以创建一个public static Map<Class<?>, String> types;地方,用所有类及其类型静态填充它,并通过调用获取类型TypesHolder.types.get(SomeClass.class)
您可以定义如下界面:
interface X {
public static final String TYPE = "...";
}
Run Code Online (Sandbox Code Playgroud)
并且您可以使类实现该接口,然后该接口将具有在接口中声明的相同值的字段.请注意,这种做法称为Constant接口反模式.
如果您希望类具有不同的值,那么您可以在界面中定义一个函数,如下所示:
interface X {
public String getType();
}
Run Code Online (Sandbox Code Playgroud)
并且实现类必须实现可以根据需要返回不同值的函数.
注意:这与抽象类的工作方式类似.