動機:我想構建一個枚舉,它代表一些價值族的所有可能的值(我在此猶豫地說「類」)。枚舉將有其他方法,字段,甚至可能實現其他接口。那麼我想這個枚舉傳遞給另一種方法,它會遍歷所有可能的值(使用Enum.values()
,並做了一些工作。Java:我如何傳遞一個代表Enum類的值?
我研究後發現,枚舉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枚舉可以很好地作爲一個多層次的邏輯宇宙。 –