本文介紹了如何獲取對(duì)象的構(gòu)造函數(shù)(反射)的參數(shù)名稱(chēng)?的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
假設(shè)我不知何故從另一個(gè)類(lèi)獲得了一個(gè)對(duì)象引用:
Object myObj = anObject;
現(xiàn)在我可以獲取此對(duì)象的類(lèi):
Class objClass = myObj.getClass();
現(xiàn)在,我可以獲取此類(lèi)的所有構(gòu)造函數(shù):
Constructor[] constructors = objClass.getConstructors();
現(xiàn)在,我可以循環(huán)每個(gè)構(gòu)造函數(shù):
if (constructors.length > 0)
{
for (int i = 0; i < constructors.length; i++)
{
System.out.println(constructors[i]);
}
}
這已經(jīng)很好地總結(jié)了構(gòu)造函數(shù),例如,構(gòu)造函數(shù)的公共測(cè)試(字符串參數(shù)名)顯示為公共測(cè)試(java.lang.String)
但是,我想要獲取參數(shù)的名稱(chēng),而不是給我類(lèi)類(lèi)型。在本例中為”參數(shù)名稱(chēng)”。我該怎么做呢?我嘗試了以下方法,但沒(méi)有成功:
if (constructors.length > 0)
{
for (int iCon = 0; iCon < constructors.length; iCon++)
{
Class[] params = constructors[iCon].getParameterTypes();
if (params.length > 0)
{
for (int iPar = 0; iPar < params.length; iPar++)
{
Field fields[] = params[iPar].getDeclaredFields();
for (int iFields = 0; iFields < fields.length; iFields++)
{
String fieldName = fields[i].getName();
System.out.println(fieldName);
}
}
}
}
}
不幸的是,這并沒(méi)有給我?guī)?lái)預(yù)期的結(jié)果。誰(shuí)能告訴我我應(yīng)該怎么做,或者我做錯(cuò)了什么?謝謝!
推薦答案
此信息在編譯后丟失,并且無(wú)法在運(yùn)行時(shí)檢索。
這篇關(guān)于如何獲取對(duì)象的構(gòu)造函數(shù)(反射)的參數(shù)名稱(chēng)?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,