ViewHolder為什麼要被宣告成靜態內部類

2021-08-30 14:05:15 字數 382 閱讀 4873

非靜態內部類會隱式持有外部類的引用,就像大家經常將自定義的adapter在activity類裡,然後在adapter類裡面是可以隨意呼叫外部activity的方法的。

當你將內部類定義為static時,你就呼叫不了外部類的例項方法了,因為這時候靜態內部類是不持有外部類的引用的。宣告viewholder靜態內部類,可以將viewholder和外部類解引用。

大家會說一般viewholder都很簡單,不定義為static也沒事吧。確實如此,但是如果你將它定義為static的,說明你懂這些含義。萬一有一天你在這個viewholder加入一些複雜邏輯,做了一些耗時工作,那麼如果viewholder是非靜態內部類的話,就很容易出現記憶體洩露。

如果是靜態的話,你就不能直接引用外部類,迫使你關注如何避免相互引用。

ViewHolder為什麼要被宣告成靜態內部類

viewholder為什麼要被宣告成靜態內部類 這個是考靜態內部類和非靜態內部類的主要區別之一。非靜態內部類會隱式持有外部類的引用,就像大家經常將自定義的adapter在activity類裡,然後在adapter類裡面是可以隨意呼叫外部activity的方法的。當你將內部類定義為static時,你就...

為什麼為什麼為什麼為什麼為什麼你要做一名程式設計師?

from 本文是從 why why why why why are you a developer?這篇文章翻譯而來。做乙個程式設計師很忙,你需要去寫 去建立meme,去進行測試,以及隨時關注最新最熱的gem 開源軟體技術。最近,我一直在想讓自己的節奏慢下來,去做一些心裡一直想做但沒有去做的事,去思...

03 為什麼封裝,為什麼有this?

為什麼封裝?嬰兒太多了,所以我們會考慮將每個出生的嬰兒的 文件 我們都會放於乙個盒子裡 這樣方便以後我們查詢他的身份證資訊。於是在這個盒子上,我們打了乙個孔,叫set 方法,如果是身份證,我們就取名 setcode 方法,這樣就將乙個人的身份證資訊建立 set了。但放進去後,我們有時候還需要檢驗這個...