我想知道这是否可能。我正在创建一个包含 a 的类,Number
该数字可以是 aFloat
或 anInteger.
但是,在运行时,这是决定的。
我想制作一个更优雅的函数,它可以采用 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 的了解还不是很先进。