我正在互联网上的某处阅读一些代码,我看到这篇有趣的文章引起了我的兴趣,我很好奇它是如何运作的。
有一个名为ResourceManager的类,如下所示:
public class ResourceManager {
private static final ResourceManager INSTANCE = new ResourceManager();
public static ResourceManager getInstance() {
return INSTANCE;
}
}
(它有很多其他的东西,但我不认为有必要包括)。但是,我觉得有趣的是,作者没有包含构造函数。事实上,在他的主要方法中,他只对这个类进行了一次引用,而不是创建一个他刚写的新对象:
ResourceManager.getInstance().etc();
我以前从未见过这样的编码。我不得不修改它,因为我需要一个ResourceManager对象来工作,所以我做的是:
ResourceManager res = ResourceManager.getInstance();
哪个工作得很好。但是,我仍然不完全理解这里发生了什么。如果没有构造函数,这个类是如何创建的?
答案 0 :(得分:8)
这是singleton pattern,意味着只有一个类ResourceManager
的实例(构造函数应该是private
才能强制执行此操作。)
但是,我仍然不完全理解这里发生了什么。如果没有构造函数,这个类是如何创建的?
如果您没有显式编写构造函数,Java将自动插入default constructor(假设超类也有一个默认构造函数)。
答案 1 :(得分:1)
回答关于没有构造函数的问题:
所有没有定义构造函数的java类都有一个隐式 public no-args构造函数。
但是,应该是一个私有的无参数构造函数,因为这个类显然是一个单例。但是如果没有私有构造函数,可以随时创建一个新实例。
答案 2 :(得分:0)
在Java中,一个类有一个默认的构造函数,假设你没有提供构造函数。否则它看起来像是Singleton Pattern,来自维基百科链接,一种设计模式,它将类的实例化限制为一个对象。再次,使其成为正确的 Singleton
您应该添加private
构造函数
private ResourceManager() {
super();
}
否则有人可以实例化它。