本人在学习单例模式的时候看到了这样的单例模式的创建方法:
public class SimpleSingleton {
private static SimpleSingleton singleInstance = new SimpleSingleton();
private SimpleSingleton(){
}
public static SimpleSingleton getInstance() {
return singleInstance;
}
}
深思其单例模式的实现:就是不允许其使用new去创建一个对象,只能通过getInstance去获得对象,而返回的就是一个静态私有对象;不管怎么调用都返回的是同一个对象。
当时就在想到什么情况下不能使用New去创建一个对象。
就从New一个对象的过程开始找:
1、加载类
(1)..class文件被类加载器加载到JVM内存的方法区 (.class文件加载到内存之后被类加载器封装成一个Class 对象)
(2).执行静态代码块和静态初始化语句
2、执行new,创建一个空白对象
3、调用构造器
4、构造器执行过程
(1).执行构造代码块和初始化语句
(2).执行构造器内容
New一个对象是肯定要调用类中的构造器来生成你所需要的对象,一般实体类中都有构造方法,就算没有也编译器也会创建一个默认的无参构造函数;
但是我们只要将无参构造函数设置为私有,像上面的单例模式那样,就调用不到构造器了;那也就是不能使用New去创建这个实体类了,从而也就是实现了始终
只有同一个对象了。
所以不能使用New去创建对象的情况就是:类中没有可以调用的构造方法,甚至连默认的可以调用的无参构造函数都不能有。
PS:这个只是很基础的关于的Java的内容,也是想着把自己学到的东西记录下来,从而让自己的记忆更加的清楚。如果有什么不对地方,也希望给与指正,我将不胜感激。