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