簡體   English   中英

如何從匿名內部類訪問非最終變量?

[英]How am I able to access non-final variable from anonymous inner class?

我有2個Java類。

  1. 測試記錄
  2. 測試2

在這兩個課程中,我都編寫了相同的邏輯。 但是在TestLogging類中,不允許我訪問匿名內部類中的非最終變量。

但是在Test2類中,為什么允許我在匿名內部類中訪問非最終變量?

測試記錄

測試2

如何從匿名內部類訪問非最終變量?

差異是由於您要針對其編譯的JDK版本(或目標版本)引起的。

Java 8理解“有效的最終”變量。 在使用JDK 8進行編譯的地方,不必在匿名類中將變量明確聲明為final即可。

換句話說,變量s盡管未聲明為final,但並未被重新分配,這使其變為“有效的final”(有關更多信息,請查看此答案 )。

在Java 8(以及您的其他項目TestLogging具有1.5的目標版本)之前,必須將變量顯式聲明為final

檢查Maven配置的Java版本 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM