[問題] 如何透過Reflection去得變數自己的名稱

看板java作者 (我的MSN上上下下...)時間11年前 (2013/12/17 18:43), 編輯推噓7(7014)
留言21則, 11人參與, 最新討論串1/2 (看更多)
我想請問是否能透過Reflection的方式變數自己的定義名稱 譬如 String mCount = new String() ; 是否可以透過 mCount.getClass() 的方式去取得 "mCount"這個名稱 ? 想請問是否有可能呢 ? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.251.38.1

12/17 19:01, , 1F
local variable不能,class field可以
12/17 19:01, 1F

12/17 20:02, , 2F
同一樓
12/17 20:02, 2F

12/17 22:05, , 3F
class field 可以嗎@@ ? reflect 應該只能列舉吧 ?
12/17 22:05, 3F

12/17 22:12, , 4F
應該不能用 "自己" 取得自己的變數名稱吧?
12/17 22:12, 4F

12/17 22:15, , 5F
oops,沒看清楚是自己的名稱,那就是都不能。
12/17 22:15, 5F

12/17 22:52, , 6F
到比較想問為何會想取變數名稱?
12/17 22:52, 6F

12/18 09:56, , 7F
不可能讓你碰到參考的東西
12/18 09:56, 7F

12/18 10:34, , 8F
debug 嗎? 例如輸出 mCount的值有誤 這樣?
12/18 10:34, 8F

12/18 17:15, , 9F
因為我寫Android在不同的Activity傳遞參數需要透過Bundle
12/18 17:15, 9F

12/18 17:59, , 10F
我想變數抓取自己的名稱去設定Bundle,避免set&get打錯字
12/18 17:59, 10F

12/18 18:38, , 11F
看起來這方法是不行,感謝~~
12/18 18:38, 11F

12/18 20:08, , 12F
就算可以你還是沒有解決會打錯字這個問題
12/18 20:08, 12F

12/18 21:31, , 13F
你可以定義一個常數,然後傳值時用常數當key
12/18 21:31, 13F

12/18 22:52, , 14F
如果不能,那eclipse的debug mode是怎麼取到的?
12/18 22:52, 14F

12/18 23:06, , 15F
那是用vm的debug模式, 再加上用 cglib 改bytecode吧~
12/18 23:06, 15F

12/19 00:40, , 16F
突然想到一個很蠢的方法 不知道行不行
12/19 00:40, 16F

12/19 00:42, , 17F
故意讓他出錯 然後用catch抓起來看變數名稱XD
12/19 00:42, 17F

12/19 18:13, , 18F
debug mode當然會帶debug info
12/19 18:13, 18F

12/19 18:15, , 19F
但是那不在reflection API裡面,另外那些資訊在compile的時
12/19 18:15, 19F

12/19 18:17, , 20F
候都是會根據選項被砍掉的
12/19 18:17, 20F

12/19 21:33, , 21F
究竟要幹嘛的
12/19 21:33, 21F
文章代碼(AID): #1Ii2hQyg (java)
文章代碼(AID): #1Ii2hQyg (java)