推斷T的方法我有一個枚舉實現了一個接口。枚舉:如何從類<T>
enum MyEnum implements MyInterface {
ONE, TWO, THREE;
@Override
public MyEnum getFirst() {
return ONE;
}
}
接口:
interface MyInterface<T extends Enum<T>> {
T getFirst();
}
我也有界限泛型類:
class MyClass <T extends Enum<T> & MyInterface> {
private T firstElement;
private Class<T> enumType;
MyClass (Class<T> enumType) {
this.enumType = enumType;
}
}
所以其主要思想是通過任何enum
(這是農具MyIterface
)成構造函數,然後使用它的常量。這對我有用。但我也想將這第一個元素存儲到firstElement
私有字段中。我試過這樣的:
firstElement = ((MyInterface)enumType).getFirst();
但仍然沒有成功。我不能投java.lang.Class<T>
到MyInterface
。任何想法如何實現這一目標?提前致謝!
更新:我的問題不是關於如何採取第一個枚舉常量。我知道.ordinal()
和.values()[0];
。我想創建可重用的泛型類,並將其與任何枚舉一起使用,並由一些接口標記。 好吧,讓它不是getFirst()
方法。讓它成爲getDefault()
@ΦXocę웃Пepeúpaツ所有枚舉繼承了該類,它有一定道理:) – niceman
的可能的複製[當給方法名稱作爲字符串時,如何調用Java方法?](https://stackoverflow.com/questions/160970/how-do-i-invoke-a-java-method-when-given-the- method-name-as-a-string) – niceman
enumType是Class類型的,它不會有你的枚舉方法。只有MyEnum.ONE,MyEnum.TWO等可用該方法。 – Sikorski