可以在没有对象

时间:2016-10-22 05:51:45

标签: java oop static

public class StateCacheManager {
    public static StateCacheManager mInstance;
}

我的问题是可以在没有对象的情况下调用变量mInstance吗?如果没有那么上述陈述的意义是什么?

3 个答案:

答案 0 :(得分:0)

static关键字标识可在不构造实例的情况下访问的类的元素。您可以使用类名作为限定符来访问它们。

在这种情况下,您可以撰写StateCacheManager.mInstance

答案 1 :(得分:0)

mInstance是类StateCacheManager的对象。这个类只有一个对象。

下面应该有getInstance方法初始化mInstance

public class StateCacheManager {
    public static StateCacheManager mInstance;

    public StateCacheManager getInstance(){
        if(mInstance == null){
            mInstance = new StateCacheManager();
        }
        return mInstance;
    }
}

这就是你使用它的方式,

StateCacheManager object = StateCacheManager.getInstance();

此类使用名为Singleton Pattern的模式。

答案 2 :(得分:0)

如果使用static修改某个(方法,字段,内部类等),可以使用其名称访问它,后缀为ClassName.

因此可以像这样访问您的mInstance变量:

StateCacheManager.mInstance

正如您所看到的,我没有创建任何对象来访问它,因此您的第一个问题的答案是“是”。

但是,你应该制作mInstance变量private并添加一个getter:

public static StateCacheManager mInstance = new StateCacheManager();
public StateCacheManager getInstance() { return mInstance; }

这是为了防止您的代码的其他用户或困了您,意外地将mInstance设置为您不想要的其他内容。

这称为 Singleton Pattern 。当你只想要一个类的一个实例存在时使用它。