Java 可以在没有对象的情况下调用公共静态类名变量吗
我的问题是变量Java 可以在没有对象的情况下调用公共静态类名变量吗,java,oop,static,Java,Oop,Static,我的问题是变量mInstance是否可以无对象调用?如果否,那么上述语句的意义是什么?关键字static标识无需构造实例即可访问的类元素。您可以使用类名作为限定符来访问它们 在这种情况下,您可以编写StateCacheManager。minInstanceminInstance是类StateCacheManager的对象。此类中只有一个对象 下面应该有一个初始化minInstance的getInstance方法 public class StateCacheManager { publi
mInstance
是否可以无对象调用?如果否,那么上述语句的意义是什么?关键字static
标识无需构造实例即可访问的类元素。您可以使用类名作为限定符来访问它们
在这种情况下,您可以编写
StateCacheManager。minInstance
minInstance
是类StateCacheManager
的对象。此类中只有一个对象
下面应该有一个初始化minInstance
的getInstance
方法
public class StateCacheManager {
public static StateCacheManager mInstance;
}
这就是你使用它的方式
public class StateCacheManager {
public static StateCacheManager mInstance;
public StateCacheManager getInstance(){
if(mInstance == null){
mInstance = new StateCacheManager();
}
return mInstance;
}
}
该类使用一个名为的模式。如果某个内容(方法、字段、内部类等)使用静态进行了修改,则可以使用其名称和类名对其进行访问。后缀
因此,您的mInstance
变量可以如下访问:
StateCacheManager object = StateCacheManager.getInstance();
如您所见,我没有创建任何对象来访问它,因此您的第一个问题的答案是“是”
但是,您可能应该使mInstance
变量private
并添加一个getter:
StateCacheManager.mInstance
这是为了防止代码的其他用户或昏昏欲睡的您意外地将mInstance
设置为您不想要的其他内容
这称为单例模式。当您只希望一个类的一个实例存在时,可以使用它
public static StateCacheManager mInstance = new StateCacheManager();
public StateCacheManager getInstance() { return mInstance; }