Java中的反射

2021-09-07 10:32:03 字數 2112 閱讀 6134

反射,曾經聽說過,一致覺得,須要什麼樣的類,就寫什麼樣的類,不就成了,何必去**別人類中元素。所以一直沒學習關於反射的東西。直到前幾天看到改動listview的高速滑塊影象。看到須要用到反射

昨天也就看了看反射

先說概念

反射就是載入乙個執行時才得知名稱的類,獲悉其完整構造,並生成物件屍體。或對其變數設定或呼叫方法

通俗地說就是

了解類

改動類

了解類就是

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

測試類:

package test;

public class myobject

public myobject(int a, int b)

public int sum()

public int minus()

public int multiply()

public int divide()

}

class c = class.forname("test.myobject");

從構造方法

constructor constructors = c.getconstructors();

for(int i = 0;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

field fields = c.getdeclaredfields();

for(int i = 0 ;i>變數名:"+f.getname());

system.out.println("------->>變數型別:"+f.getmodifiers());

system.out.println("----->>修飾符:"+f.gettype());

}

方法:

method m = c.getdeclaredmethods();

for(int i = 0;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以下就是通過反射去應用類

//建立類的物件

classp = 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);

JAVA中的反射

反射的原理 應用在一些通用性比較高的 中 後面學到的框架,大多數都是使用反射來實現的 在框架開發中,都是基於配置檔案開發 在配置檔案中配置了類,可以通過反射得到類中的所有內容,可以讓類中的某個方法來執行使用反射首先需要得到class類 三種方式獲取class類 類名.class 物件.getclas...

JAVA中的反射

應用場景 程式在執行時接收到外部傳入的乙個物件,該物件在編譯時型別是object,但程式又需要呼叫該物件執行時的型別的方法。為了解決這個問題,程式需要在執行時發現物件和類的真實資訊。解決該問題有以下兩個做法。第一種做法是假設在編譯時和執行時的都完全知道型別的真實資訊。在這種情況下,可以先使用inst...

java中反射的原理

簡單的回憶下,下次做具體的分析。首先有乙個反射包,這個包裡有這些類,方法類 放類裡的一些方法,構造方法類,放構造方法資訊 欄位類,放類的一些字段資訊,class類,這個類的型別資訊,乙個類在編譯完後會形成乙個.class檔案,這個檔案裡會有乙個class類存放這個類的型別資訊。執行期間,我們如果要產...