反射就是把一个java类的各种成分映射成为相应的java类
Field Method Constructor Package
1.类.class
2.对象.getClass();
3.Class.forname("java.lang.String");常用
1> 内存中没有则,用类加载器加载进内存
2>内存中有则,直接得到字节码
9个预定义的实例对象(8个基本类型+void.class)
int.class 等于 Integer.TYPE;
int[].class.isPrimitive() FALSE(不是基本类型)
int[].class.isArray() TRUE(是一个数组类型)
只要在源程序中出现的类型,都有各自的Class实例对象,如:int[],void
例:字段暴力反射
Field fieldx = pt1.getClass().getDeclaredField("x");
fieldx.setAccessible(true);
field.get("pt1");
Method
例:
Method methodChatAt = Class.forname("java.lang.String").getMethod("chatAt");
methodChatAt.invoke(obj1,1); 若obj1处为null则表示Method对象对应的是一个静态方法