
回复
接上回的单例模式线程是否安全?
https://harmonyos.51cto.com/posts/871
我们先来谈谈枚举
枚举是JDK1.5推出的新特性,本身也是一个class类
我们先创建一个枚举
枚举是线程安全的吗?直接上代码测试!
通过反射的 newInstance 方法的源码得知 枚举无法通过反射创建对象
枚举无法用反射创建对象 我们测试一下
我们尝试通过反射枚举的无参构造创建来创建对象
运行 发现报错了 但是看报的错误和我们预期的不一样
并没有报出 newInstance 中抛出的异常:
Cannot reflectively create enum objects
而是 抛出了 没有这样的方法 的异常
难道是IDEA骗了我们?为什么不是无参构造方法 抛出没有这样的方法的异常?
通过百度查阅资料得到下面的结论
可以在上图中看出其实是有参构造的 而且参数是String 和 int
同样的方法通过反射来创建对象
终于得到了预期的异常!!也就证明了不能通过反射来破坏枚举单例模式!
作者:____小明同学i
来源:CSDN