Cannot refer to a non-final variable xx inside an inner class defined in a different method的原因
今天遇到一個小問題,下面是網上摘抄的解釋:
為了說明這個問題,先得明白說明是區域性內部類,區域性內部類就是在外部類的方法中定義的類。那麼標題中的錯誤指的是,內部類不能引用該方法中非 final 修飾的變數。
那麼為什麼呢?
因為生命週期的原因。方法中的區域性變數,方法結束後這個變數就要釋放掉,final保證這個變數始終指向一個物件。
首先,內部類和外部類其實是處於同一個級別,內部類不會因為定義在方法中就會隨著方法的執行完畢而跟隨者被銷燬。問題就來了,如果外部類的方法中的變數不定義final,那麼當外部類方法執行完畢的時候,這個區域性變數肯定也就被GC了,然而內部類的某個方法還沒有執行完,這個時候他所引用的外部變數已經找不到了。如果定義為final,java會將這個變數複製一份作為成員變數內置於內部類中,這樣的話,由於final所修飾的值始終無法改變,所以這個變數所指向的記憶體區域就不會變。
相關推薦
Cannot refer to a non-final variable xx inside an inner class defined in a different method的原因
今天遇到一個小問題,下面是網上摘抄的解釋: 為了說明這個問題,先得明白說明是區域性內部類,區域性內部類就是在外部類的方法中定義的類。那麼標題中的錯誤指的是,內部類不能引用該方法中非 final 修飾的變數。 那麼為什麼呢? 因為生命週期的原因。方法中的區域性變數,方法結
報錯解析 [Vue warn]: You may have an infinite update loop in a component render function.
結構 vue操作一個很有意思的報錯 [Vue warn]: You may have an infinite update loop in a component render function. 程式碼: <template> <span
using a dict on a Series for aggregation is deprecated and will be removed in a future version
python的pandas中,在統計聚合的時候,版本問題,提示不支援字典格式了。 比如,下面程式碼這樣改就可以了。 words_stat = words_df.groupby(by=['segment'])['segment'].agg({"計數": numpy.size})
vue sort()方法報錯:“You may have an infinite update loop in a component”
html <div class="box" v-for="(item,itemindex) in itemrank" :key="itemindex"> <div class="box-title" > <div class="t
【javascript】[Vue warn]: You may have an infinite update loop in a component render function.
今天遇到一個問題,因為資料來源不是同一個陣列,但是想使用連續的index。 簡化了一下,程式碼長下面這樣,實際上第一眼看是沒有問題的。 <!DOCTYPE html> <html> <head> <meta http-equiv="conte
Launch an Amazon EMR Cluster in a VPC Environment
Amazon Web Services is Hiring. Amazon Web Services (AWS) is a dynamic, growing business unit within Amazon.com. We are currently hiring So
java 中的 Cannot make a static reference to the non-static method
原文: https://blog.csdn.net/q610376681/article/details/49359819 今天敲程式碼的時候遇到了這個問題,大體這個問題可以簡化成這樣; public class Test1 { pu
java cannot make a static reference to the non-static method
我最後,還是無法理解和運用static, 這似乎太難. I am not able to understand what is wrong with my code. class Two { public static void main(String[] args) { in
Cannot make a static reference to the non-static method
本質上是一個“沒有例項化物件”的問題。 在靜態方法中,不能直接訪問非靜態成員(包括方法和變數)。因為,非靜態的變數是依賴於物件存在的,物件必須例項化之後,它的變數才會在記憶體中存在。例如一個類 Student 表示學生,它有一個變數String address。如果這個類沒有被例項化,則它的
uses a non-standard layout and cannot be attached to this project
問題:我嘗試在同一個視窗中開啟其他專案時或者新建一個專案時會彈 出一個彈出視窗(它提供了在新視窗中開啟或在當前視窗中開啟的選 項)。 解決方案:我發現新專案在新專案的.idea資料夾中沒有.iml檔案。 我從另 一個
svn全部更新專案後,全報錯,xxx cannot be to a type/variable之類的,並且package/import都報錯
原因:這是因為svn全部更新將專案中的.project檔案也更新下來了, 解決辦法:將workspace中的.project檔案備份後刪除,然後clean專案,clean完這些錯誤就解決了。刪除的.project檔案會自動生成。有的時候clean完會遇到某幾個 java檔案
Call to a member function display() on a non-object問題的解決
png cti http ember member 解決 tail 分享 sdn Call to a member function display() on a non-object問題的解決 Call to a member function display()
Pytorch-Is it possible to forward a tensor through a model (only Variable works)?
array arrays 圖片 operation hat near aci efi HR In Pytorch 0.4, I can forward a tensor through a model which is the same as Variable. imp
java.lang.RuntimeException: Canvas: trying to use a non-premultiplied bitmap android.graphics.Bitma
java.lang.RuntimeException: Canvas: trying to use a non-premultiplied bitmap [email protected] 載入圖片的時候發現上述異常。程式碼如下: public static FaceIma
com.android.dex.DexIndexOverflowException: Cannot merge new index XXXXX into a non-jumbo instruction
編譯報錯: com.android.dex.DexIndexOverflowException: Cannot merge new index XXXXX into a non-jumbo instruction 之類的報錯的話,多半是由於專案中引入的庫多而且太大,這些模組需要生成一個Dex
Error: Cannot perform an interactive login from a non TTY device
Docker on Windows: interactive tty session gives “cannot enable tty mode on non tty input” Trying to run a shell into a running container (docker
PG cannot execute UPDATE in a read-only transaction | How to add column if not exists on PostgreSQL
PG cannot execute UPDATE in a read-only transaction出現這種情況時,說明SQL語句可能是執行在一個PG叢集中的非master節點上。檢視data/pg_hba.conf。 SELECT pg_is_in_recovery(); &nb
Attempt to set a non-property-list object
let userDictArray = NSMutableArray.init() for user in recentArrayTemp { //
You are trying to add a non-nullable field 'password' to userinfo without a default問題
當向models.py對應類新增一個新欄位 password = models.CharField(max_length=20) 之後,執行python3 manage.py makemigrations命令提示以下資訊: You are trying to add a n
CGLIB Common causes of this problem include using a final class or a non-visible class;
類似以下的spring錯誤資訊: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class $Proxy145]: Common causes o