这篇文章主要讲解:JAVA强制类型转换经常遇到的问题,主要分为2种情况。
1、当两个类没有继承关系时:
package Test; public class Test { public static void main(String []args) { C c = new C(); B b = (B) c; } } class B extends A { public void locate() { System.out.println("class B"); } } class C { public void locate() { System.out.println("class C"); } }此时,(B)c这行代码下边会出现错误提示: Cannot cast from C to B 2、当超类强制转换为子类时: package Test; public class Test { public static void main(String []args) { A a = new A(); B b = (B) a; } } class A { public void locate() { System.out.println("class A"); } } class B extends A { public void locate() { System.out.println("class B"); } } 这时,代码不会出现错误提示,但运行时会抛出异常: java.lang.ClassCastException正确解决办法:在进行强制类型转换时,使用instanceof进行判断: package Test; public class Test { public static void main(String []args) { A a = new A(); if(a instanceof B) { B b = (B) a; } } } class A { public void locate() { System.out.println("class A"); } } class B extends A { public void locate() { System.out.println("class B"); } }