2013-07-07 46 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

抱歉模糊不清。我编辑了这个问题。 –