关于singleton模式的一点疑问

purples 2003-10-20 09:42:55
我看到很多书上写着:
public class Singleton {

  private Singleton(){}

  private static final Singleton instance = new Singleton();
}
我不知道这里为什么要加一个final,不加又会发生什么问题呢?
...全文
43 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
clapton 2003-10-22
  • 打赏
  • 举报
回复
to: truezerg(赵明宇)
多谢指教,我想是我的理解有误:)
purples 2003-10-21
  • 打赏
  • 举报
回复
恩,我明白了,谢谢各位!
truezerg 2003-10-21
  • 打赏
  • 举报
回复
to : purples()

对于C++ 我不太熟悉,你能不能把C++版本的单例写法写出来我们分析一下。

定外在Java中的 final 不等于 C++中的const,final可以实现类似于C++中的 const 的性质,但还有其它的用途。

to: clapton(clapton)

对于加final是为了让该实例不被修改。这种理解是不对的。 加final只能使那个引用不能再指向其它的实例,但它所指向的实例是可以被修改的。可能是你没有理解final的真正意思,或是我没有理解你的意思
clapton 2003-10-21
  • 打赏
  • 举报
回复
我觉得写不写final于singleton是无关的,写final只是为了让该实例不被修改。
fengyuxi 2003-10-21
  • 打赏
  • 举报
回复
static
为了让整个虚拟机使用一个实例
final
为了让对象指针不会指向其他对象,
指针指向的唯一实例是不可改变的!
purples 2003-10-21
  • 打赏
  • 举报
回复
to truezerg(赵明宇) ( )
那为什么在c++的实现版本中,没有加上const关键字呢?
purples 2003-10-21
  • 打赏
  • 举报
回复
对阿,这也是我想问的,这样写有什么好处呢?
truezerg 2003-10-21
  • 打赏
  • 举报
回复
private static final Singleton instance = new Singleton();

这里在 instance 前加 final 表示这个 instance 引用一旦指向了一个实例,(比如这里是
new Singleton() ) 那这个引用就不能再指向其它的实例了。
yangjuanli 2003-10-21
  • 打赏
  • 举报
回复
那不写的话可不可以呢?
JhonsonShu 2003-10-20
  • 打赏
  • 举报
回复
The final modifier says that the value of the field does not change
实例指针不可变
Almzg_0 2003-10-20
  • 打赏
  • 举报
回复
安全第一罗:)
tianmenyzh 2003-10-20
  • 打赏
  • 举报
回复
final好象表示强调instance是不可以变的。
一起学习。
等待有人解答

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧