是否可以设计自己的Java类型,类似于可扩展的enum

例如,我有某个模块使用的用户角色,然后一个子包提供了其他角色。

JDK方面会涉及什么?

最佳答案

由于Enums无法扩展,因此您必须伪造它。

用受保护的构造函数创建一个类。

然后,您可以在类中创建public static final FakeEnum实例。

public class FakeEnum {

    private String name;
    private Object something;

    protected FakeEnum(String name, Object otherParam) {
        this.name = name;
        this.something = otherParam;
    }

    // public getters

    public static final FakeEnum ONE = new FakeEnum("one", null);
    public static final FakeEnum TWO = new FakeEnum("two", null);
    public static final FakeEnum THRE = new FakeEnum("thre", null);
}


然后,您可以扩展它并向其中添加更多内容,如下所示:

public class ExtendedFakeEnum extends FakeEnum {

    public static final FakeEnum EXTENDED_ONE = new FakeEnum("extended_one", null);
    public static final FakeEnum EXTENDED_TWO = new FakeEnum("extended_two", null);

}

关于enums - Java-如何设计自己的类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3069926/

10-11 03:59