强制子类在抽象 java 类中包含常量

2022-09-04 03:12:34

我有一个抽象类,我希望所有子类都根据实现定义一个常量 - 它主要是关于类实现的元数据。

在超类中:

protected static final String OBJECT_NAME;
protected static final String OBJECT_DEF;

然后在子类中:

protected static final String OBJECT_NAME = "awesome class";
protected static final String OBJECT_DEF = "an awesome class that is also great";

有没有办法强制类的实现声明常量?


答案 1

您可以强制子类定义一个方法,该方法可以是该类的常量。

protected abstract String objectName();
protected abstract String objectDef();

注意:如果您有子类的子类,这些子类可能会“忘记”重写这些方法。


答案 2

这不会以这种方式工作。我将这些定义为抽象函数:

protected abstract String objectName();
protected abstract String objectDef();

在子类中:

private static final String OBJECT_NAME = "awesome class";
private static final String OBJECT_DEF = "bla";

protected String objectName(){
    return OBJECT_NAME;
}

protected String objectDef(){
    return OBJECT_DEF;
}

这些方法不是,但我认为这是最接近你想要的。static


推荐