反射機制中得到Class類的實例的三種方式:
1.Class c=Class.forName("com.baidu.dto.Student");
2.Student student = new Student();
Class c = student.getClass();
3.Class user = User.class;
1.class.forName("類的權限定名")
2.對象.getClass();
3.類.class
屬性:
獲取所有“公有”的字段
Field[] fieldArray = stuClass.getFields();
獲取所有的字段(包括私有、受保護、默認的)
Field[] fieldArray= stuClass.getDeclaredFields();
方法:
獲取所有的“公有”方法
Method[] methodArray = stuClass.getMethods();
獲取所有的方法,包括私有的
Method[] methodArray = stuClass.getDeclaredMethods();
獲取公有的show1()方法
Method m = stuClass.getMethod("show1", String.class);
獲取私有的show4()方法,並調用
m = stuClass.getDeclaredMethod("show4", int.class);
m.setAccessible(true);//解除私有限定
Object obj = stuClass.getConstructor().newInstance();
Object result = m.invoke(obj, 20);//需要兩個參數,一個是要調用的對象(獲取有反射),一個是實參
構造方法:
所有公有構造方法
Constructor[] conArray = clazz.getConstructors();
所有的構造方法(包括:私有、受保護、默認、公有)
Constructor[] conArray = clazz.getDeclaredConstructors();
獲取私有構造方法,並調用
con = clazz.getDeclaredConstructor(char.class);
con.setAccessible(true);// 暴力訪問(忽略掉訪問修飾符)
obj = con.newInstance('男');