基本数据类型包装类的.class属性和.TYPE属性有什么区别?

代码:

import java.lang.reflect.Method;
public class Demo2 {
public static void main(String[] args) {
Class class1 = String.class;
try {
Method d1 = class1.getDeclaredMethod("lastIndexOf", Integer.class);
System.out.println(d1.toString());
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

运行结果如下:

img

将代码改成下面这样

import java.lang.reflect.Method;
public class Demo2 {
public static void main(String[] args) {
Class class1 = String.class;
try {
Method d1 = class1.getDeclaredMethod("lastIndexOf", Integer.TYPE);
System.out.println(d1.toString());
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

运行结果如下:

img

问题:Integer.class与Integer.TYPE都是得到Integer的Class对象,上面这两段代码的结果为什么不一样呢?基本数据类型包装类的.class属性和.TYPE属性有什么区别?

Integer.class获取到的是 Integer的Class对象
Integer.TYPE表示的是该包装类对应的基础类型对象即 int.class
Integer.TYPE == int.class
如有帮助,请采纳!

Integer.class: 表示Integer类对象
Integer.TYPE:表示int类对象
二者还是不一样的