最近遇到了一个很奇怪的bug,空指针异常但是又和一般的空指针不太一样。
源代码是这样的
方法中使用了 else if ,有三段条件判断语句,最后一个返回null,前两个返回各自的findViewById结果。这里会发生上述崩溃。
查看jvm字节码得到前两段的字节码
发现第二段else if字节码会把findViewById的内容转换为Void类型。如果执行到这里就会发生崩溃。
解决方法:
把语句改为when的方式修改
源代码是这样的
方法中使用了 else if ,有三段条件判断语句,最后一个返回null,前两个返回各自的findViewById结果。这里会发生上述崩溃。
查看jvm字节码得到前两段的字节码
发现第二段else if字节码会把findViewById的内容转换为Void类型。如果执行到这里就会发生崩溃。
把语句改为when的方式修改