单例模式中,声明对象时为什么一定要用static修饰呢?

乐之者v 2018-01-10 09:48:51
用static方法修饰,jvm会先加载,然后一直存在内存中。
单例模式中,声明对象时为什么一定要用static修饰呢?
...全文
2379 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiexieiamok 2018-05-31
  • 打赏
  • 举报
回复 3
被迫的配合static声明的构造方法
i_myxxx 2018-01-19
  • 打赏
  • 举报
回复
因为只有这样才能保证他是单例啊
yun1996 2018-01-19
  • 打赏
  • 举报
回复
因为单例只能是一个对象,static可以做限制,可以保证在内存中只有一个对象
初见_冰 2018-01-16
  • 打赏
  • 举报
回复
引用 1 楼 sunle818 的回复:
它们仅能调用其他的static 方法, 它们只能访问static数据。 它们不能以任何方式引用this 或super。 静态方法只能调用静态成员变量,仅此而已,为了配合实现单列。 说到底,成员变量需要用static修饰是被迫的。。。。。。。。。。。
就是因为你这个原因,至于楼下说的 保证对象的唯一性 ,和这个关系不大,单线程的时候确实可以保证对象唯一性,但是在多线程的环境中,static并不能保证对象的唯一性。具体还要看你实现单例的方式是哪种方式,另外说一下,官方推荐的用法是 enum 来实现singleton,jvm会保证enum的唯一性。
itherael 2018-01-12
  • 打赏
  • 举报
回复
静态块和静态方法的理解有混淆
maradona1984 2018-01-12
  • 打赏
  • 举报
回复
用static方法修饰,jvm会先加载 个人觉得你或许是对这句话认知有点错误
youyouke 2018-01-12
  • 打赏
  • 举报
回复 1
创建单例类的步骤: 1、私有化该类的构造函数。 2、通过new在本类中创建一个本类对象。 3、提供一个公有的静态方法,将创建的对象返回。 单例类因为不允许其他程序用new来创建该类对象,所以只能将单例类中的方法定义成静态的(随类的加载而加载),静态方法不能访问非静态的成员,故只能将该类中new的本类对象变成静态的。
galiniur0u 2018-01-11
  • 打赏
  • 举报
回复
引用 2 楼 NullPointerExcept1on 的回复:
保证对象的唯一性
单例模式么,根据字面意思就可以看出在内存中始终只有唯一一个实例,而static修饰就保证了这一点,在任何时刻任意类中引用都是唯一一个实例在操作。
彭大勃 2018-01-10
  • 打赏
  • 举报
回复
保证对象的唯一性
  • 打赏
  • 举报
回复 1
它们仅能调用其他的static 方法, 它们只能访问static数据。 它们不能以任何方式引用this 或super。 静态方法只能调用静态成员变量,仅此而已,为了配合实现单列。 说到底,成员变量需要用static修饰是被迫的。。。。。。。。。。。

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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