我想知道這是否可能。我創建了一個包含Number
的類,該編號可以是Float
或Integer.
但是,在運行時,這是決定的。動態類型鑄造的Java反射/泛型類型
我想做一個更優雅的函數,可以採用Float或Integer並對其進行數學運算,因爲我確實存儲了變量的類型,所以我希望能夠使用泛型/反射。
這裏是我的枚舉
public enum Type {
FLOAT,
INTEGER;
public final Class clazz;
Type() {
if (this.name().equals("FLOAT"))
clazz = Float.class;
else if (this.name().equals("INTEGER"))
clazz = Integer.class;
else
clazz = null;
}
}
這是內部的上我的課。
下面是一些代碼:
private <T extends Number> T compareTo(Class<T> lhs, Class<T> rhs) {
// lhs > rhs return 1
// rhs < lhs return -1
// else return 0
}
現在,我們知道了Java,你不能動態地鍵入像type.clazz lhzType = (type.clazz) lhs
鑄件,但有沒有用正確的泛型來完成這件事什麼辦法?我覺得應該有,因爲如果有任何反思問題出現,它可以被視爲一個錯誤。但是到目前爲止,我還沒有像Java那樣先進。
我不知道什麼是你真正想要做的(你有什麼想法爲了比較類,我理解比較類的對象,但比較類型),但似乎你可以通過使用http://pastebin.com/By5Kb1KV – Pshemo
改善一點你的枚舉我很困惑 - 爲什麼'compareTo'採取'Class'而不是'T's? –