1.字节码
得到一个类的字节码有三种方法:
①这个类的字节码已经加载都内存里面来了,找到他,直接返回就行了:对象.getClass();例如:new Date().getClass();
②这个类的字节码如果已经存在内存里面了Class.forName("类名")直接得到并返回,如果没有在内存Class.forName()则用类加载器先加载到内存再使用;
③类名.class 例如:System.class;
有9个预定义的Class实例对象:8个基本类型+void
String str1 = "abc";
Class cls1 = str1.getClass();
Class cls2 = String.class;
Class cls3 = Class.forName("java.lang.String");
cls1 == cls2 //true
cls2 == cls3 //true
cls1.isPrimitive() //false
int.class == Integer.TYPE //true
int.class == Integer.class //false
int.class.isPrimitive() //true
int[].class.isPrimitive() //false
int[].class.isArray() //true
总之: 只要在源程序中出现的类型,都有各自的Class实例对象,例如:
int[],void...
2.反射
反射就是把java类中的如属性,方法等东东映射成相应的java类(Method,Contructor等).
阅读(564) | 评论(0) | 转发(0) |