- 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的子类。这个时候你强制应该是没有问题的。