请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

枚举单例外部类反射攻击问题

https://img1.sycdn.imooc.com//szimg/60c99af509cb6bbb10100275.jpg

https://img1.sycdn.imooc.com//szimg/60c99b150914d90809780325.jpg

老师 你这个使用枚举和没使用枚举的单例打印不一致啊

https://img1.sycdn.imooc.com//szimg/60c99b63099cc97012360744.jpg

打印结果

https://img1.sycdn.imooc.com//szimg/60c99b7b0900dc8c09130280.jpg

如果都用枚举这种方式,使用反射调用getInstance方法的话  打印结果都一致啊

正在回答 回答被采纳积分+3

1回答

翔仔 2021-06-18 02:36:54

同学好,这个是符合预期的呀,请问是有什么问题呀,枚举获取到的里面的实例都一致,证明单例是有效的

0 回复 有任何疑惑可以回复我~
  • 老师这块我也有点没明白呢?一个是使用constructor.newInstance()实例出的对象和调用getInstance()获取的实例比较,另一个是两次都使用getInstance()调用获取实例比较(调用方式不同)这怎么证明单例没有被破坏的呢?
    回复 有任何疑惑可以回复我~ 2021-11-28 15:54:20
  • 翔仔 #2
    同学好,直接打印实例名称,多次都是同样的证明是单例,这里咱们保证的是枚举里面的实例是唯一的。
    回复 有任何疑惑可以回复我~ 2021-11-28 23:48:13
  • 慕仙zwynb 回复 翔仔 #3
    谢谢 翔仔老师 明白了,是我理解的角度错了给予枚举包裹的单例其外围也是可以被反射破坏的,因为无法使用反射调用枚举的构造函数,所以才说枚举里面的实例是惟一的(类加载实例化时候new出来的)
    回复 有任何疑惑可以回复我~ 2021-11-30 13:54:17
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信