根据类成员选择适当的枚举类



我有一个absract类,它描述了子类的一般功能。初始化子类时,我希望将特定的枚举类设置为父抽象类上的成员。我该怎么做?

示例:AbstractFunctionality.java

public abstract class AbstractFunctionality {
protected String Name;
protected String Surname;
// specific enum class
public AbstractFunctionality(String Name, String Surname){
this.Name = Name;
this.Surname = Surname;
}
}

Child1.java

public class Child1 extends AbstractFunctionality {
public Child1(){
super("Jane","Austen");
}
}

如何指定我想要Child1类中的public enum Writers

更简单的方法是添加enum类型作为抽象类的字段参数的类型:

public abstract class AbstractFunctionality {
protected String Name;
protected String Surname;
Writers writers;
public AbstractFunctionality(String Name, String Surname, Writers writers){
this.Name = Name;
this.Surname = Surname;
this.writers = writers;
}
}

子类:

public class Child1 extends AbstractFunctionality {
public Child1(){
super("Jane","Austen", Writers.SOME_FIELD);
}
}

或者,您可以使枚举Writers实现更通用的interface,比如IWriters

public abstract class AbstractFunctionality {
protected String Name;
protected String Surname;
protected IWriters writers;
public AbstractFunctionality(String Name, String Surname, IWriters writers){
this.Name = Name;
this.Surname = Surname;
this.writers = writers;
}
}

接口:

public interface IWriters {
... 
}

枚举:

public enum Writers implements IWriters{
...
}

这种方法的好处是,可以使用不同的枚举类型来实现相同的接口,因此它们也可以用于抽象类。

也许你可以在抽象类中设置泛型

public abstract class AbstractFunctionality<T extends Enum<T>> {
protected String Name;
protected String Surname;
T specificEnum
public AbstractFunctionality(String Name, String Surname,T specificEnum){
this.Name = Name;
this.Surname = Surname;
this.specificEnum=specificEnum;
}

在子类中

public class Child1 extends AbstractFunctionality<Writers> {
public Child1(){
super("Jane","Austen",Writers.POEM);
}
}
}

最新更新