2013-07-07 52 views
1

如果我聲明瞭一個類的靜態,並且它的內容是靜態的,這是否意味着該類的內容不再是靜態的?Java靜態修飾符查詢

下面是發生了什麼,我在Android的自定義適配器中使用了ViewHolder。

當我的代碼是這樣的:

static class ViewHolder { 
    static TextView blah; 
    //more widgets 
} 

ListView控件有重複的數據和行被洗牌上滾動。

但是,當我這樣做,沒有重複創建。基本上,每個列表項目只創建一個實例,並且項目在滾動中不會隨機播放。

static class ViewHolder { 
    public TextView blah; 
    //more widgets 
} 

現在,我知道public是默認的訪問specifer,並沒有做的任何改變。雙重靜態會互相抵消嗎?它是否像雙重否定是積極的?

+0

不是。「但是,當我這樣做時:」當你這樣做時發生了什麼? – codeMagic

+0

@codeMagic - 編輯問題 –

回答

1

static修飾符上一個類只有在它是一個內部類時纔有意義。靜態內部類意味着內部類的一個實例可以獨立存在,而不需要外部類的實例。

成員變量的靜態修飾符意味着該封閉類的所有實例只有該變量的一個副本。

因此,靜態修飾符對成員變量上的靜態修飾符上的類沒有影響。

+0

謝謝。這非常合理。 –

+0

那麼發生在這裏的是我創建了這個類的一個實例,並且這個類只能創建一個變量實例,因此失敗了,是的? –

+0

在第一種情況下,右側是@Torcellite。 – Vikdor

0

雙靜態互相抵消嗎?

我不明白你的,你要觀察症狀的描述,所以我怕我不能提供任何進一步的建議;)

+0

抱歉模糊不清。我編輯了這個問題。 –