单例模式问题:单例模式中的类成员是否需要加final修饰

饿汉式:加入final修饰对于模式实现本身无影响

//创建该类型的私有静态实例
private static final SingletonOne instance = new SingletonOne();

//创建公有静态方法返回静态实例对象
public static SingletonOne getInstance(){
	return instance;
}

懒汉式:加入final修饰产生编译报错,提示信息为:无法对final修饰的成员进行操作。
原因是:final修饰的静态成员,如果在定义时未进行实例化,则需要在静态代码中去实现,而不能到类方法中才进行实例化。

// 创建静态的该类实例对象
private static final SingletonTwo instance = null;

// 创建开放的静态方法提供实例对象
public static SingletonTwo getInstance(){
	if(instance==null)
		instance = new SingletonTwo();//报错

	return instance;
}

从应用层面来说:
如果饿汉式的程序代码中不仅涉及创建对象及返回的功能,还包括其他的功能,譬如资源回收等,就不能假如final修饰,会影响程序功能实现。

总结:

  • 懒汉式中不能加入final。
  • 如果在饿汉式代码中,对类实例只涉及创建和返回方法,可以加入final修饰。

引流2

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值