我有一个enum,它有一个属性是另一个类。我想在某处放置一个约束,即枚举的所有实例都应该具有扩展某个上限的属性的值,在本例中是一个接口。这是没有绑定的基本工作示例:
public enum MyClassRegistry
{
MyClass(1,com.example.MyClass.class)
private int typeId;
private Class theClass;
}
接下来我要做的是:
public enum MyClassRegistry
{
MyClass(1,com.example.MyClass.class)
private int typeId;
private Class<T extends SomeInterface> theClass;
}
强制执行此字段的所有值都会扩展某个上限。这可能吗?如果是这样,这是什么语法?
答案 0 :(得分:2)
public enum MyClassRegistry
{
MyClass(1,com.example.MyClass);
private int typeId;
private Class<? extends SomeInterface> theClass;
MyClassRegistry(int typeId, Class<? extends SomeInterface> theClass) {
this.typeId = typeId;
this.theClass = theClass;
}
}
答案 1 :(得分:1)
enum
类型不能声明任何泛型类型参数。
如果你的意思是你想要一个具有某种超类型的字段,例如一个接口,只需将该字段声明为具有该类型。
public enum MyClassRegistry
{
First(1, new InterfaceFirstImpl()),
Second(2, new InterfaceSecondImpl()) ;
MyClassRegistry (int id, Interface value) {
this.typeId = id;
this.value = value;
}
private int typeId;
private Interface value;
}