switch和枚举的小坑
工作项目中的 online 和 room 有使用到反射,在一次加需求的时候,发现了某实现类中有众多if else
,看着实在难受。于是,手动"优化"成switch
,结果发现 online 和 room 启动报错了。一开始怎么也没想到是众多if else
改成switch
造成的。直到发现输出class
文件的目录下多了个RoomHandlerImpl$1.class
如图:
然后反编译后就会看见$SwitchMap$yourCase'Enumeration
,你case
的枚举元素就会在这个类中。后来发现只要使用了switch case
枚举,就会生成这么一个synthetic
类 所以,在长连接服务器启动的时候会扫描指定包下的类,然后调用newInstance
方法。问题就出在这儿了,因为该类是synthetic
,无法被实例化,所以会产生java.lang.InstantiationException
,定位到问题,结束!
可能很多人没有见过synthetic
类,特地补上,如下:
转载于:https://juejin.im/post/5cfe06b8e51d4555fd20a312
switch和枚举的小坑相关推荐
- golang原生库mime/multipart上传formdata文件的一个小坑unexpected EOF
golang原生库mime/multipart上传formdata文件的一个小坑unexpected EOF 遇到的问题 问题代码 问题分析 正确代码 总结 遇到的问题 用mime/multipart ...
- net core mysql 连接池_EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽
EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽 发布时间:2019-02-18 22:05, 浏览次数:1152 , 标签: EF Core DbContextPool ...
- mciSendString 的两个小坑
刚刚修正了自己用的小闹钟的代码. 坑1:REPEAT 选项的作用范围 原来用得好好的,之后选择 .wav 文件,居然不出声音了-- 诶,MCI 肯定支持 .wav 的啊-- 仔细想想,我以前都是选 . ...
- 小坑记录:get_cmap参数区分大小写
小坑记录: plt.cm.get_cmap('spectral', 10) File "C:\Users\sanye\AppData\Local\Programs\Python\Python ...
- ThinkPHP开发中遇到的小坑
TP不得不说是现在来说最好用的框架了,但是也不能不承认它还是有一些小坑需要填了. 1.坑爹的字段缓存机制 thinkphp为了高效的读取数据库,更快的打开网页,加入了字段缓存这个机制,其实来说是挺好的 ...
- java 小坑_关于Java子父类关系的小坑
原标题:关于Java子父类关系的小坑 学过JavaSE的都知道java类在初始化的时候,如果存在直接父类,是先初始化父类,然后才初始化子类. 子类拥有父类所有的非私有化成员,非私有的成员不仅仅包括pu ...
- C#中的Infinity有个小坑
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 昨天家里有事,上网也不方便,就没有推送文章.今天很累,也不长篇大论了.简单介绍一下最近遇到的 ...
- spring + maven项目 互相依赖的小坑
在项目的搭建的过程中,出现了某个被依赖的项目,打包都是成功的,但是依赖的它的项目在编译的时候出现了问题,综合网上的解决方案,终于找到了一个可行的方法. 摘自 https://blog.csdn.net ...
- EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽
DbContextPool 是 ASP.NET Core 2.1 引入的新特性,可以节省创建 DbContext 实例的开销,但没有想到其中藏着一个小坑. 最近有一个 ASP.NET Core 项目持 ...
最新文章
- 自己写的一个抢票加速的Python小程序源码分享-----纯属娱乐
- NumPy快速入门-- Less 基础/线性代数
- java 的io流需要学吗_Java的IO流之字节流,必须要学得内容,你会嘛?
- LoadRunner实战
- Spark Structured Straming:'writeStream' can be called only on streaming Dataset/DataFrame
- maven项目打包时生成dependency-reduced-pom.xml
- 跑酷游戏的一些bug总结(滥用FixedUpdate的坑)
- 【Css】Css实现DIV半透明效果(示例)
- 床长人工智能教程 - 目录
- Metasploitable2虚拟机镜像下载地址
- Redis(八):zset/zadd/zrange/zrembyscore 命令源码解析
- php内外边距,CSS 内边距
- python桌面界面开发在那种编译器写代码_Python智慧编程——第1讲 遇见Mu editor
- 现代信号处理——时频分析与时频分布(时频分布的基本理论)
- IDEA插件系列(87):Base64 image encoder插件——以base64编码的形式查看图像
- image “pyimage2“ doesn‘t exist
- 如何使用创意AI破解FB广告
- 超静音服务器性能强,超静音办公室专用 戴尔T20微服务器评测
- three.js流动线
- DOS命令大全(转载)
热门文章
- 现代软件工程讲义 5 团队合作的阶段
- 线程间操作无效:从不是创建控件的线程访问它的三种方法
- this Activity.this Activity.class
- win7安装MongoDB学习笔记
- 守住你的网站:防御DDoS***指南
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路(1)
- 微服务实战(六):选择微服务部署策略
- 方法总比困难多_只是为了生活
- 《Servlet和JSP学习指南》一第2章 Session管理 2.1 网址重写
- nginx访问日志,错误日志参数说明