JAVA——原始类型 VS 对象类型

标签 java class reflection types

我有以下变量:

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[].classInteger则不返回true。例如,类
  • Integer.TYPE 和类似的都是 int.class, ..
  • 的别名

最明智的方法是使用库或编写几行涵盖所有情况的代码。只有 8 个(booleanbytecharshortintlongfloatdouble)基本类型 (+ void)。

关于JAVA——原始类型 VS 对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34442585/

相关文章:

java - java (Robotium) 中的隐藏方法和类

java - 如何对带有String、String、String...作为参数的方法进行反射调用?

oop - 是否有可能违反ABAP中的反射封装?

java - Java 中的十进制和厘秒解析

java - 如何从字符串到方法

java - Java中两个状态机之间的通信

python - 附加到列表时更改实例中的变量不起作用 - Python

java - 如何使用类参数分解 dao

Java-反射 : Get fields belonging to current class only

JAVA:更改日历对象的时区而不更改日期/时间时的奇怪行为