伊莉討論區
標題:
[求助]匿名內部類如何調用非final的變數?[已解決]
[打印本頁]
作者:
ahway9988
時間:
2018-11-16 10:31 AM
標題:
[求助]匿名內部類如何調用非final的變數?[已解決]
本帖最後由 ahway9988 於 2018-11-18 11:56 AM 編輯
(由於中刮號似乎會被去除,只好用貼圖方式,不便見諒orz)
[attach]125591695[/attach]
但個編輯器告訴我 local variables referenced from an inner class must be final or effectively final
跟我之前上的進修課說到 匿名內部類使用變數要把它視為final
是不是一樣的意思?
但我要如何做到在匿名內部類 去存取 Base.currentBase=Base.base
; 這樣的動作?
我的目的是 要在這個事件裡做到 點擊Label後 取得我點到什麼物件 ,然後可以在其它空間 將這個物件再複制一份放下去
就像 小畫家 你點中上方功能清單的物件 在下方可以繪圖的空間裡 放下那個物件差不多意思,但這裡是想模擬 小遊戲建築的動作
感謝大大們的救助 orz
文字文件
[attach]125591685[/attach]
.
大概解決的方式可以在 叫用匿名內部類前
先使 final int finalI=i;
然後在 Base.currentBase=Base.base[finalI]; 就能解決那個問題了
作者:
kwj
時間:
2018-11-16 11:13 AM
建議先嘗試了解一下為什麼 Java 一開始會要求必須要 final 變數才能被匿名函數存取,例如:
Why are only final variables accessible in anonymous class?
https://stackoverflow.com/questions/4732544
然後~錯誤訊息中有提示「must be final or effectively final」,也就是允許的範圍是 final 或者 effectively final,搭配如果已經理解了為什麼一開始要限制 final,應該就能了解在什麼情況下能夠存取了。
Difference between final and effectively final
https://stackoverflow.com/questions/20938095
作者:
ahway9988
時間:
2018-11-18 11:52 AM
kwj 發表於 2018-11-16 11:13 AM
建議先嘗試了解一下為什麼 Java 一開始會要求必須要 final 變數才能被匿名函數存取,例如:
Why are only ...
大概知道一些原因了 感謝^^
歡迎光臨 伊莉討論區 (http://a04.eyny.com/)
Powered by Discuz!