稍微学习过java基础和知道java反射api的人都应该知道java的数字类型 有基本类型和包装类型,当着两者在反射api处理过程中是不是一直对待呢?如int.class=Integer.class是否成立呢?如果不成立,那为什么不成立。下面一个简单的分析就可以管窥java基本类型在编译后的小把戏。
测试代码:
public class TestPrimary { public static void main(String[] args) { System.out.println(int.class.getName()); System.out.println(Integer.TYPE); System.out.println(Integer.class.getName()); } }
实例代码结果截图:
反编译截图:
结论:
从javap反编译结果可以看出来int.class编译后实际是取得静态字段Integer.TYPE,而这个字段类型是Class,类名是int。而Integer的全限定的类型实际是java.lang.Integer,所以int.class和Integer.class实为两个类。所以int.class=Integer.class结果你懂的!