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


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值