java反射機制實戰 4 Field

2021-09-24 09:45:55 字數 2054 閱讀 1680

有了上一節method的實驗,操作field就易如反掌了。

/**

* 反射父類物件

*/public class abstractreflectionmodel

public string getid()

public void setid(string id)

public string getid2()

public void setid2(string id2)

}

/**

* 反射物件

*/public class reflectionmodel extends abstractreflectionmodel

public reflectionmodel(string sql)

public reflectionmodel(string sql, integer count)

private reflectionmodel(string sql, integer count, boolean flag)

public string getsql()

private void setsql(string sql)

public integer getcount() throws runtimeexception

private void setcount(integer count)

private static void setcount2(integer count)

@override

public string tostring() ';

}}

通過class獲取字段

reflectionmodel model = new reflectionmodel("1", 1);

class<? extends reflectionmodel> clazz = model.getclass();

// getdeclaredfields() 只能訪問類中所有的字段,但是不能訪問父類字段

field declaredfields = clazz.getdeclaredfields();

for (field f : declaredfields)

system.out.println("-----------------------------------");

// getfields() 只能訪問類中宣告為公有的字段,但是能訪問父類字段.

field fields = clazz.getfields();

for (field f : fields)

列印結果:

sqlcount

name

desc

-----------------------------------

desc

id2

如果使用getdeclaredfields() 無法獲取父類的字段,可以通過以下**獲取

// 獲取父類所有字段

class<?> superclass = clazz.getsuperclass();

if (superclass != object.class)

}

列印結果:

sqlcount

name

desc

idid2

-----------------------------------

desc

id2

接下來通過反射設定字段值

/**

* 反射呼叫字段值

*/public class reflectiontest3 else if (type == integer.class)

}system.out.println(model);

}}

列印結果:

reflectionmodel

java反射機制

private string getmethod catch instantiationexception e1 catch illegalacces ception e1 try catch illegalargumentexception e catch illegalacces ception...

Java反射機制

1.反射是指程式在執行時,可以通過反射機制拿到任何乙個類的內部所有資訊。2.可以獲得類的所有屬性資訊,包括私有屬性,並對其進行操作 3.可以獲得物件所對應的類 4.可以拿到本類,或父類中的方法,並且對其進行操作。常用方法 getname 獲得類對應的名稱 getdeclaredfields 獲得類中...

java 反射機制

當我們編寫的類生成的位元組碼檔案中的二進位制位元組流被類載入器載入到記憶體當中時,會在方法區產生乙個class物件,作為訪問這些類資訊的入口。假如我們編寫乙個person類,獲取class物件一般有3種方式 class有4個獲取字段資訊的方法,包括靜態變數和例項變數 所有的public欄位,包括其父...