为了账号安全,请及时绑定邮箱和手机立即绑定

java设计模式单例模式final关键字的问题

java设计模式单例模式final关键字的问题

三国纷争 2018-12-07 09:54:39
今天看了一下java设计模式的单例模式,在懒汉式中一开始声明的类的实例化对象为什么只用private static 声明了而没有加final关键字?在饿汉式中声明实例是使用了private static final修饰
查看完整描述

7 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

声明为final的变量,必须在类加载完成时已经赋值, 是什么意思呢?

就是,如果你是final非static成员,必须在构造器、代码块、或者直接定义赋值

如果是final static 成员变量,必须直接赋值 或者在 静态代码块中赋值

然而直接赋值 或 静态代码块中赋值 就变成饿汉模式了,

所以懒汉模式中,不能用final修饰

查看完整回答
反对 回复 2018-12-16
?
MM们

TA贡献1886条经验 获得超2个赞

不一定需要final关键字吧。单例设计模式饿汉还是懒汉之分在于调用对象之前已经初始化还是调用之后再初始化。

查看完整回答
反对 回复 2018-12-16
?
ibeautiful

TA贡献1993条经验 获得超6个赞

我知道这个,我的疑问是既然区别只是在声明类的实例化对象的时机不同,为什么声明的时候修饰的关键字不一样

查看完整回答
反对 回复 2018-12-16
?
手掌心

TA贡献1942条经验 获得超3个赞

@宿舍老五啊: 这个我感觉得看需求吧。需求有时候要求得那样做。只是使适用情况不一样吧

查看完整回答
反对 回复 2018-12-16
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

单例模式和final有关系么?我之前没用过啊

查看完整回答
反对 回复 2018-12-16
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

用饿汉式实现时,

private static final Singleton instance = new Singleton();

在声明时需要直接创建实例。

用懒汉式实现时,

private static Singleton instance;

声明时不需要直接创建对象,但这两种在声明的时候为什么一个用了final修饰一个没用?

查看完整回答
反对 回复 2018-12-16
  • 7 回答
  • 0 关注
  • 1491 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号