JAVA 反射 總結 之 初級 (二)

2021-07-02 16:56:13 字數 2096 閱讀 4957

在上一節段中我們從整體上描述了反射,深入了解了class類,有了class物件  我們能做什麼個 ,本章節做深入的探索和學習:

概述:我們建立執行時類的物件 呼叫的是:

person person = clazz.newinstance();
建立對應的執行時類物件,使用newinstance(),實際上就是呼叫了執行時類的空參的構造器,當然你要呼叫空參的構造器執行類就要有乙個空參的構造器,且許可權足夠;

person person = new person(); 也是呼叫執行時類的空參的構造器;

第一part: 通過反射呼叫類的完整結構

獲取屬性:

@test

public void test() throws instantiationexception, illegalacces***ception

// 能獲取執行時類中本身宣告的所有屬性

field fieldarry01 = clazz.getdeclaredfields();

for (field field01 : fieldarry01)

}

獲取方法:

@test

public void test01()

// 獲取執行時類中的宣告的所有方法

method methods00 = clazz.getdeclaredmethods();

for (method method : methods00)

// 獲取修飾符

string str = modifier.tostring(method.getmodifiers());

system.out.println(str);

// 獲取返回值型別

class returntype = method.getreturntype();

system.out.println(returntype.getname() + " ");

// 獲取方法名

system.out.print(method.getname() + " ");

// 獲取形參列表

system.out.print("(");

class params = method.getparametertypes();

for (class p : params)

system.out.println(")");

// 獲取異常型別

class exces = method.getexceptiontypes();

if (0 != exces.length)

for (class exce : exces)

system.out.println();

} }

獲取執行時類中的其他結構

@test

public void test03() throws classnotfoundexception }

@test

public void test04()

@test

public void test05()

@test

public void test06()

@test

public void test07() }

@test

public void test08()

@test

public void test09()

}

第二part

通過反射呼叫類中的指定方法指定屬性以及構造方法

// 設定指定類中的屬性

@test

public void test10() throws exception

// 呼叫指定類中的方法並呼叫

@test

public void test11() throws exception

// 呼叫指定的構造器

@test

public void test12() throws exception

JAVA的反射總結

1.class.forname總結 1.1 原始型別採用class clazz class.forname i getcomponenttype 1.2 類陣列情況採用 lfullclassname 1.3 類情況採用fullclassname 2.class的關鍵函式總結 2.1.1 class....

Java 反射用法總結

簡單的來說,就是在程式執行時,獲取類所有屬性和方法資訊 還可以動態建立乙個物件,並且呼叫它的任意乙個方法 訪問和修改任意乙個屬性,包括private修飾的方法和屬性。獲得class物件的三種方法 child child new child class yclass child.getclass cl...

java泛型反射總結

在需求中,資料庫有兩張表user,admin。我們要查詢裡面的id,name等資訊通常都是寫兩個dao,然後分別給每個查詢欄位寫一套方法。然而其實查詢這些欄位的方法都大同小異,所以產生了乙個更好的解決辦法,就是寫乙個通用的dao,然後把相同的方法寫在通用的dao genericdao 裡,然後然實體...