反射的簡單使用

反射:
反射機制中得到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('男');
發佈了23 篇原創文章 · 獲贊 45 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章