黑马程序员技术交流社区
标题:
反射里的问题
[打印本页]
作者:
创出一片辉煌
时间:
2012-8-4 12:44
标题:
反射里的问题
反射里的问题,例
Method met = value.getMethod("GOGO",String.class,int.class) ;
public Method getMethod(String name,
Class<?>... parameterTypes)
throws NoSuchMethodException,
SecurityException
,老师说取得反射有 三种方法,其中一种是 类.class 里面,但是上面的程序,却是int.class 而不是Integer.class 为什么呢,我知道应该是Integer.TYPE = int.class
作者:
林康春
时间:
2012-8-4 13:10
1 不是说取得反射,而是说取得类字节码有3种方法:注意:是类
得到字节码: 类名.class 对象.getClass() Class.forName("类名")
另外,取得基本类型的字节码
Boolean.TYPE, Character.TYPE, Byte.TYPE, Short.TYPE, Integer.TYPE,
Long.TYPE, Float.TYPE, Double.TYPE, Void.TYPE
其中void比较特殊
2 你看一下下面的代码
String str = "abc";
Class c1 = str.getClass()//得到字节码;
Class c2 =String.class;//得到字节码
Class c3 =Class.forName("java.lang.String");//得到字节码
c1==c2==c3
System.out.println(c1.isPrimitive());//不是基本类型
System.out.println(int.class.isPrimitive());//基本类型
System.out.println(int.class==Integer.class);//两种不同类型的字节码
System.out.println(int.class==Integer.TYPE);//同类型的字节码
注意: int.class==Integer.TYPE 这里是true的
int.class是基本类型的字节码 Integer.TYPE也是基本类型的字节码
所以,你说的“ 。。。 而不是Integer.class 为什么呢”,可以说是int.class 也可以是Integer.class
作者:
胡文凡
时间:
2012-8-4 13:16
Method met = value.getMethod("GOGO",String.class,int.class)
因为met里需要的参数是(,String,int)所以使用int.class啊。Integer.class与int.class又不同,为什么要用 Integer.class。需要什么类型的参数就用什么类型的.class。至于你说的什么类.class这里是特殊情况,null.class都可以,null明显不是一个类但是它也有字节码的。基本数据类型也对应了其相应的字节码。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2