Java不能使用New去创建对象的情况

本人在学习单例模式的时候看到了这样的单例模式的创建方法:

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的内容,也是想着把自己学到的东西记录下来,从而让自己的记忆更加的清楚。如果有什么不对地方,也希望给与指正,我将不胜感激。

经验分享 程序员 微信小程序 职场和发展