我想知道这是否可能。我创建了一个包含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? –