如何避免在父类转换到子类时发生java.lang.ClassCastException
在父类转换到子类时会发生ClassCastException异常,当你面对一个工程时成千上百的类时,
是不太容易发现类之间的关系的,所以即使知道该原则,有时候还是避免不了,那应该如何处理呢:
SuperClass
public class SuperClass { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
SubClass
public class SubClass extends SuperClass { private String performance; public String getPerformance() { return performance; } public void setPerformance(String performance) { this.performance = performance; } }
测试
public static void main(String[] args) { SuperClass superClass = new SuperClass(); SubClass subClass = (SubClass) superClass; subClass.setName("abc"); System.out.println(subClass.getName()); }
上述代码如约抛出了ClassCastException,怎么避免?
在每次进行强制转换时使用instanceof判断一下是否存在关系,然后再进行转换。
if(superClass instanceof SubClass){ subClass = (SubClass) superClass; subClass.setName("abc"); System.out.println(subClass.getName()); }
即当每次想把一个对象转换为另一个类的实例的时候,先判断该对象是否是目标类的一个实例,
这样就能避免这样的错误。