这篇文章主要讲解: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");
}
}