当前位置: 代码迷 >> Java相关 >> 关于Java强制类型转化问题
  详细解决方案

关于Java强制类型转化问题

热度:120   发布时间:2010-07-15 23:33:57.0
关于Java强制类型转化问题
这是我随便写的一个程序,想检测下向下转型
public class Animal {
   public String animal="animal";
  
}
public class Dog extends Animal {
   public String dog="dog";
}

public class Text {
  public static void main(String[] args) {
    Animal animal=new Animal();
    Dog dog=(Dog)animal;
  }
}
系统提示如下错误,不解,还请高手指点:
Exception in thread "main" java.lang.ClassCastException: Youjianqin.Animal cannot be cast to Youjianqin.Dog
    at Youjianqin.Text.main(Text.java:17)
搜索更多相关的解决方案: Java  类型  

----------------解决方案--------------------------------------------------------
http://329937021.javaeye.com/blog/545201
----------------解决方案--------------------------------------------------------
程序代码:
class Animal {
   public String animal="animal";

}
class Dog extends Animal {
   public String dog="dog";
}

public class Text {
  public static void main(String[] args) {
    Animal animal=new Dog();//父类的引用类型变量“指向”其子类的对象
    Dog dog=(Dog)animal;
  }
}



----------------解决方案--------------------------------------------------------
由上向下的转换首先要判断一下animal是不是dog对象,因为animal包括的范围比dog大,假如说是cat对象,那是不可能转换成dog的,这个意思好理解吧?
所以在转换之前先判断一下这个animal是不是属于Dog类型,加一条if语句来判断,这种用法很长见,最常用的就是重写equals()方法的时候。
这样就不会有异常了:
public class Animal {
   public String animal="animal";

}
public class Dog extends Animal {
   public String dog="dog";
}
public class Text {
  public static void main(String[] args) {
    Animal animal=new Animal();
    if(animal instanceof Dog){
       Dog dog=(Dog)animal;
    }
  }
}

----------------解决方案--------------------------------------------------------
谢谢各位大虾,了解了

----------------解决方案--------------------------------------------------------
  相关解决方案