Java中的反射,Java反射

來源:互聯網
上載者:User

Java中的反射,Java反射

反射,以前聽說過,一致認為,需要什麼樣的類,就寫什麼樣的類,不就成了,何必去探究別人類中元素,所以一直沒學習關於反射的東西,直到前幾天看到修改ListView的快速滑塊映像,看到需要用到反射

昨天也就看了看反射

先說概念

反射就是載入一個運行時才得知名稱的類,獲悉其完整構造,並產生對象屍體,或對其變數設定或調用方法

通俗地說就是瞭解類修改類

瞭解類就是

從構造方法 、成員變數、方法、各元素的修飾符瞭解類

測試類別:

package test;public class MyObject {public int a ,b;public MyObject(){}public MyObject(int a, int b) {super();this.a = a;this.b = b;}public int sum(){return a+b;}public int minus(){return a-b;}public int multiply(){return a*b;}public int divide(){return a/b;}}

Class c = Class.forName("test.MyObject");

從構造方法

Constructor[] constructors = c.getConstructors();for(int i = 0;i<constructors.length;i++){System.out.println("------第"+i+"個方法----->>>"+constructors[i].toString());System.out.println("----->>方法名:"+constructors[i].getName());System.out.println("----->>修飾符:"+constructors[i].getModifiers());Class p[]= constructors[i].getParameterTypes();for(int j=0;j<p.length;j++){System.out.println("參數j:"+p[j]);}}
成員變數

Field[] fields = c.getDeclaredFields();for(int i = 0 ;i<fields.length;i++){Field f =fields[i];System.out.println("------->>變數名:"+f.getName());System.out.println("------->>變數類型:"+f.getModifiers());System.out.println("----->>修飾符:"+f.getType());}

方法:

Method m[] = c.getDeclaredMethods();for(int i = 0;i<m.length;i++){System.out.println("------第"+i+"個方法----->>>"+m[i].toString());System.out.println("----->>方法名:"+m[i].getName());System.out.println("----->>修飾符:"+m[i].getModifiers());System.out.println("------>>傳回值 :"+m[i].getReturnType());Class p[]= m[i].getParameterTypes();for(int j=0;j<p.length;j++){System.out.println("參數j:"+p[j]);}}
從上述幾個方面去瞭解類

下面就是通過反射去應用類

//建立類的對象Class[]p = new Class[2];p[0]=int.class;p[1]=int.class;Constructor constructor =c.getConstructor(p);Object object = constructor.newInstance(34 ,90); //修改成員變數Field fielda= c.getField("a");System.out.println("----->>改變前:"+fielda.get(object));fielda.setInt(object, 190);System.out.println("----->>改變後:"+fielda.get(object));//調用類的方法Method method1 = c.getMethod("sum");Object sum = method1.invoke(object);System.out.println("--->>加=="+sum);









聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.