zoukankan      html  css  js  c++  java
  • 如何避免在父类转换到子类时发生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());
        }

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

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

  • 相关阅读:
    注意身体
    用生命去战斗
    来到华师,一切清零
    linux fork()函数 转载~~~~
    小端大端
    位域
    内存泄漏(memory leak)和内存溢出
    stack,heap的区别
    内存管理简便复习总结
    虚函数&&虚继承
  • 原文地址:https://www.cnblogs.com/leilong/p/9329752.html
Copyright © 2011-2022 走看看