Java反射研究(1)

來源:互聯網
上載者:User

java.lang.reflect包

Constructor、Field、Method的父類是AccessibleObject;

說明:反射主要用於開發架構,即製作架構;


一、獲得Class對象

Class<?> c = Class.forName("classname");   拋出ClassNotFoundException


二、獲得實現介面

Class<?> inters[] = c.getInterfaces();

for(int i=0;i<inters.length;i++){

    System.out.print(inters[i].getName()+" ");        //getName()方法為取得介面名稱;

}


三、獲得父類

Class<?> superClass  = c.getSuperclass();     //獲得父類

String name  = superClass.getName();    //獲得父類名稱


四、取得構造方法

Constructor cons[] = c.getConstructors();         //獲得公開的構造方法

Constructor dcons[] = c.getDeclaredConstructors();        //獲得全部構造方法

String modifier = Modifier.toString(cons[i].getModifiers());   //獲得存取權限

String name = cons[i].getName();            //獲得構造方法名稱

Class<?> params[] = cons[i].getParameterTypes();        //獲得參數類型對象


五、獲得Method

Method ms[] = c.getMethods();                        //返回公用的全部方法,包括繼承方法

Method dms[] = c.getDeclaredMethods();        //返回本類全部方法,不包括繼承的方法

Class<?> rt = ms[i].getReturnType();

Class<?>params[] = ms[i].getParameterTypes();

String name = ms[i].getName();

String modifier = Modifier.toString(ms[i].getModifiers());

Class<?>ex[] = ms[i].getExceptionTypes();        //獲得異常

String name = ex[i].getName();            //獲得異常名稱


六、獲得Field

Field fs[] = c.getFields();                    //獲得公用屬性,包括繼承屬性

Field dfs[] = c.getDeclaredFields();    // 獲得本類全部屬性

Class<?> type = fs[i].getType();        //獲得屬性的類型對象

String name = fs[i].getName();        //獲得屬性的名稱

String modifier = Modifier.toString(fs[i].getModifiers());


七、通過反射建立一個對象(1)

Class<?> c = Class.forName("Person");

Person p = (Person)c.newInstance();

(2)

Constructor con = c1.getConstructor(Class....param);

Object obj = con.newInstance(Object obj);  //根據建構函式建立一個執行個體


八、Constructor建立對象

Class c = Class.forName("Person");
Constructor<?> cons[] = c.getConstructors();
Person p = (Person)cons[0].newInstance("xiazdong",15);

註:如果調用的建構函式為私人,則需要c.setAccessible(true);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.