我有以下变量:
Class a = int.class;
Class b = Integer.class;
可以动态比较吗?这意味着我想获取第二个变量的原始类型并将其与第一个进行比较。
最佳答案
无法从 Java 内置的 Integer.class
中获取 int.class
,反之亦然。您必须手动进行比较。
Integer.class.isAssignableFrom(int.class)
及其反函数返回false
,因为它不考虑自动装箱(这是编译器生成的代码)- 表明您正在处理原始类型的唯一标志是
Class#isPrimitive()
对于int.class
(也void.class
)返回true,但对于int[].class
、Integer则不返回true。例如,类
。 Integer.TYPE
和类似的都是int.class
, .. 的别名
最明智的方法是使用库或编写几行涵盖所有情况的代码。只有 8 个(boolean
、byte
、char
、short
、int
、long
、float
、double
)基本类型 (+ void
)。
关于JAVA——原始类型 VS 对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34442585/