icv*_*cvg 6 java generics enums
我需要这样的东西:
public enum Enum {
ENUM1<Class1>(Class1.class, "A DESCRIPTION", new Class1()),
ENUM2<Class2>(Class2.class, "A DESCRIPTION", new Class2()),
ENUM3<Class3>(Class3.class, "A DESCRIPTION", new Class3());
private Enum(Class<? extends Object> clazz, String description, Object instance) {}
}
Run Code Online (Sandbox Code Playgroud)
我需要的是:我在一个地方定义所有ClassX的不同实例(它们扩展了相同的ClassSuper).当然,我可以为每个ClassX定义不同的枚举,但这不是我想要的.
JLS不允许枚举的类型参数:
EnumDeclaration:
ClassModifiers(opt) enum Identifier Interfaces(opt) EnumBody
EnumBody:
{ EnumConstants(opt) ,(opt) EnumBodyDeclarations(opt) }
Run Code Online (Sandbox Code Playgroud)
枚举实际上可以有字段,看起来这就是您想要的:
private Object instance;
private Enum(Class<? extends Object> clazz, String description, Object instance) {
this.instance=instance;
}
public Object getInstance() {
return instance;
}
Run Code Online (Sandbox Code Playgroud)
据我所知,枚举不能被参数化,所以你不能在你的代码中使用它。你到底想用这些课程来做什么?我可能误解了你的问题
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |