【发布时间】:2012-10-31 02:36:55
【问题描述】:
动机:我想构建一个枚举来代表某些值族的所有可能值(我在这里犹豫说“类”)。枚举将有额外的方法、字段,甚至可能实现其他接口。然后我想将此枚举传递给另一个方法,它将遍历所有可能的值(使用Enum.values() 并做一些工作。
我研究发现枚举Foo实际上变成了Foo extends Enum<Foo>。这就是为什么我不能扩展枚举。我试图将我的方法参数定义为:
myMethod(Class<?> bar) {...}
myMethod(Class<? extends Enum> bar) {...}
myMethod(Class<? extends Enum<?>> bar) {...}
但是当我尝试一些基本的东西时在方法内部:
int i = bar.values().length;
它失败了。有没有其他方法可以做到这一点(或避免这样做)?
注意:我可以传递枚举的实际实例并使用bar.getDeclaringClass() 来查找枚举类(而不是实例),但这很丑。
【问题讨论】:
-
听起来你真的在描述一个“迭代器”。
-
@HotLicks 也许但 OP 正在寻找更多。 Java 枚举可以很好地作为多吨的逻辑宇宙。