写代码多年,从未遇到这种问题,问题排查起来也比较麻烦,问题解决了但是还不知道为什么不会报错~~~求大师赐教。
先大概描述一下问题。项目里面的代码是别人早就写好了的,项目我们接过来后没有动过源代码,测试后发现功能有问题,看日志,一切正常。测试环境比较复杂,本地没有,所以只有挨着打印日志,发现代码运行到了强制类型转换这一句就停止了,没有继续往下跑,也没有报错。问题就是这样,奇葩得很,难道的Java的bug,网上没搜到类似的情况。
本地写了类似的代码跑,100%报错:
Exception in thread "main" java.lang.ClassCastException: com.cxy808.example.A cannot be cast to com.cxy808.example.B
at com.cxy808.example.Test.main(Test.java:15)
源代码类似下面,求高手解释
package com.cxy808.example; import com.cxy808.example.B; public class A { private String name; private B boss; public String getName() { return name; } public void setName(String name) { this.name = name; } public B getBoss() { return boss; } public void setBoss(B boss) { this.boss = boss; } }
package com.cxy808.example; public class B { }
package com.cxy808.example; import java.util.ArrayList; import java.util.List; import com.cxy808.example.A; import com.cxy808.example.B; public class Test { public static void main(String[] args) { List<Object> list = new ArrayList<Object>(); A a = new A(); list.add(a); B b = (B) list.get(0); } }
奇葩的就是在B b = (B) list.get(0);这儿没有抱异常....why??????