zoukankan      html  css  js  c++  java
  • java中编译报错 ClassCastException 是什么原因,如何处理

    ClassCastException  表示类型转换异常    

    例如:Pet 宠物类   Dog  狗狗类 (继承Pet)  Penguin 企鹅类(继承Pet)

      Dog  dog  =  (Dog)pet  ;  正确  向下转型

      Dog   dog =   (Dog)penguin  ;  错误  向下转型

    处理方法:使用  instanceof  进行类型判断,可以避免类型转换异常

        Pet pet = new Dog();

      例:  if(pet  instanceof  Dog){

        Dog dog = (Dog)pet; 

           

        }else if(pet instanceof Penguin){

        Penguin  penguin = (Penguin)pet;

        }

    ........class Pet(){

    .....

    public void print(){

    }

    ......

    }

    .....Dog extends Pet(){}

    Pet x = new Dog("哆啦A梦",100,100);

    补充:   为什么要向下转换?       因为向上转换   例如上面的  Dog 向上转换成Pet    Pet的引用x它就是Pet类型的

       在Dog这个子类有重写父类Pet方法的方法或没重写,  能用x去调用父类的方法 (即使子类并没有显示出来, 但依旧是默默继承了下来),具体化子类      但如果是子类特有的方法  也就是没有重写父类的方法  你就不能直接通过Pet类型x来调用Pet的子类Dog里特有的方法

    所以这里要用到向下转换

  • 相关阅读:
    调试常用命令
    android获取手机机型、厂商、deviceID基本信息
    融云即时通讯 添加地理位置信息的功能
    Linux centOS下搭建RTMP服务器的具体步骤
    数组与字符串 1.4
    数组与字符串 1.5
    数组与字符串 1.3
    数组与字符串 1.2
    数组与字符串 1.1
    笔记本自开wifi设置
  • 原文地址:https://www.cnblogs.com/bichen-01/p/11193452.html
Copyright © 2011-2022 走看看