可能重複:
Java Reflection: How to get the name of a variable?如何在Java中獲取變量名?
我發現這個話題,但從來沒有任何令人滿意的答案各種各樣的議論..
A anyVariableName = new A();
我怎樣才能得到的名稱變量anyVariableName
並得到字符串"anyVariableName"
作爲結果? 這在Java中可能嗎?
可能重複:
Java Reflection: How to get the name of a variable?如何在Java中獲取變量名?
我發現這個話題,但從來沒有任何令人滿意的答案各種各樣的議論..
A anyVariableName = new A();
我怎樣才能得到的名稱變量anyVariableName
並得到字符串"anyVariableName"
作爲結果? 這在Java中可能嗎?
如果anyVariableName
是局部變量,則不能。如果它是一個字段,請使用Class#getField()
或Class#getDeclaredField()
。
注意:這兩種方法只有在你已經有了名字時纔有用。 –
唯一的地方局部變量名都存儲在源(你可以解析)或調試信息(你可以從字節碼得到,如果已被列入它)
如果它是一個領域,你如果您不知道名稱,可以使用Class.getDeclaredFields()。
+1,如果你得到一個Java「反編譯器」並在類上使用它,你會看到你的所有變量都有改變的名字。例如,如果你有'Socket s = new Socket(9001);'你可能會看到類似'Socket localSocket = new Socket(9001);'的東西。雖然這讓我感到困惑,因爲我不明白如果這種事情發生,反射是如何工作的。 – Logan
AFAIK,反編譯器不使用調試信息。我不確定這是爲什麼。 –
*「但從來沒有任何令人滿意的答案..」*這往往是因爲沒有答案。你看到了什麼答案,以什麼方式不滿足你? –
在代碼中'anyVariableName'是一個字段還是一個公共變量? – gaborsch