2016-02-12 107 views
0

我正面臨以下問題:我必須爲成千上萬的GUI元素提供名稱。將是很好,如果它可以工作的腳本,如:Java:從變量中獲取變量名稱

JMenuItem myMenuItem = new JMenuItem(); 
myMenuItem .setName(this.getClass().getSimplename() + "." + myMenuItem .get??) 

將是很好,如果我可以設置元素「Classname.myMenuItem」的名稱。

是否有任何方法獲得變量的名稱(變量名稱c,而不是JMenuItem.getName())?

+0

是的,使用反射。 – Shark

+1

菜單項實例可以被多個變量引用。或者它可以被沒有變量引用。在這些情況下將使用哪個變量的名稱? –

+0

不......這是不可能的......你也應該避免使用'getClass()。getSimplename()'這個...如果你的應用程序被混淆了,這個類很可能會被重命名爲隨機字母.. – Codebender

回答

0

您可以通過反射對此字段進行此操作:請參閱Field.getName()

你不能爲局部變量做它,它們在代碼編譯後基本上沒有任何名字(當然,在調試信息中他們有,但除非你實現調試器:-))。

0

你想要什麼是不可能的。即使關於變量名稱的一些信息存在於類文件中,您仍然必須記住它所指的變量對象之間存在差異。可以有任何數量的變量(局部變量,成員變量,參數等)引用同一個對象。跟蹤所有這些變量的名稱會帶來太多的運行時間開銷。

+0

感謝您的解釋,有道理;) – SWYM