java 枚举类 switch不进case 记一次部署时的坑

最近在部署项目时,采用替换class文件形式 ,新增一个枚举字段 case节点 linux生产上发现不进case,本地windows是正常的,刚好枚举类字段是65个 网上查资料 推荐枚举推荐不超过64个,导致被误导,误以为字段个数过多会有不一样的编译或者在linux环境上 编译会有什么不一样的地方。

替换的class文件假设叫xxx.class 发现同目录下有xxx$1.class文件,当时看了一眼 以为是动态代理生成的文件 也没在意。
解决问题:第一想法是switch string字段名 想到switch string是在jdk7之后才有的 避免节外生枝 干脆用if else 比较string 解决了这个问题,问题是解决了 但是疑惑还一直在。后来在本地模拟时,发现也会生成一个 $1.class文件 这里面是存的枚举信息 恍然大悟 ,新增的枚举字段信息 自然也是存在这个文件里面,而部署时 由于本地没找到xxx$1.class,直接把xxx.class替换 上去 最终导致不进入case。 为了避坑,建议还是用if else 字符串形式写!

Guess you like

Origin blog.csdn.net/qq_36268103/article/details/116167548