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);
}
# 1 楼答案
由于枚举不能扩展,所以必须伪造它
使用受保护的构造函数创建一个类
然后可以在类中创建
public static final FakeEnum
实例然后你可以扩展它,并在其中添加更多的东西,比如:
# 2 楼答案
可扩展枚举的概念毫无意义。枚举用于静态声明将为其自身类型创建的整个实例集。如果允许它被延长,就无法确保这一点
# 3 楼答案
如果您需要一个“可扩展枚举”,那么字典可能更适合您,请查看
java.util.Dictionary<K,V>
,其中K是键名(您将如何引用特定值,V是所述键应返回的值/对象)我认为这是我最接近可扩展枚举的一次
另外,看看at this question on SO,这也可能解决它
# 4 楼答案
好的
我要做的是编写一个接口,然后编写几个实现,以了解如何在特定事件中找到要通知的用户。正确的实现将在运行时被注入,然后它将做任何需要做的事情来找到正确的用户。该实现可能只需要使用参数来配置要查找的组名,然后返回用户列表
我正在学习更多地使用界面/合同设计。我过去的大部分开发都只有一个实现,所以我把这看作是一个没有实际意义的观点,而忘记了那个工具/方法
谢谢,
沃尔特
# 5 楼答案
用Java设计自己的类型是不可能的。您需要做的任何事情都可以使用各种设计模式来完成