当前位置: 代码迷 >> J2SE >> 想破头啦,关于父类强转成子类的有关问题
  详细解决方案

想破头啦,关于父类强转成子类的有关问题

热度:47   发布时间:2016-04-24 00:29:01.0
想破头啦,关于父类强转成子类的问题
Java code
public class Demo {    public static void main(String[] args){        Fu f = new Fu();        Zi z =(Zi)Fu();    }}class Fu{    }class Zi extends Fu{    }

为什么这样就错误?而下面这样却可以
Java code
Element a = (Element) document.getElementsByTagName("a").item(0);//此处返回Node

Element 也是Node的子类,为什么他就可以强转呢?而上面就不行?

------解决方案--------------------
Element a = (Element) document.getElementsByTagName("a").item(0);//此处返回Node
我想,是应该你的 document.getElementsByTagName("a")返回是一个 Element数组,不用是 用Node类型引用指向 Element对象。所以可以安全强转到Element。

而你的 
Fu f = new Fu();
Zi z =(Zi)f;
这个会报错强制转型错误,除非 Fu f = new zi();或者new 一个zi的子类。这个时候你强制应该是没有问题的。
  相关解决方案