如何避免在父类转换到子类时发生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());
    }

即当每次想把一个对象转换为另一个类的实例的时候,先判断该对象是否是目标类的一个实例,

这样就能避免这样的错误。

 

posted @ 2018-07-18 16:10  listener_lei  阅读(2002)  评论(0编辑  收藏  举报