小编Dav*_*vid的帖子

尝试强制转换子类时出现ClassCastException

我有这个代码:

package Maven_test.Maven_project_test;

public class Test {
    class A {
        int i = 10;
    }

    class B extends A {
        int j = 20;
    }

    class C extends B {
        int k = 30;
    }

    public void pruebaJerarquia() {
        A a = new B();
        B b = (B) a;
        C c = (C) b;

        System.out.println(c.k);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这一行:

C c = (C) b;
Run Code Online (Sandbox Code Playgroud)

执行程序时抛出此异常:

Exception in thread "main" java.lang.ClassCastException: 
Maven_test.Maven_project_test.Test$B cannot be cast to 
Maven_test.Maven_project_test.Test$C
    at Maven_test.Maven_project_test.Test.pruebaJerarquia(Test.java:21)
    at Maven_test.Maven_project_test.App.main(App.java:10)
Run Code Online (Sandbox Code Playgroud)

我认为它与向上转播和向下转发有关,但我不明白.可能是因为"b"指向"a"并且"C …

java casting

2
推荐指数
1
解决办法
77
查看次数

标签 统计

casting ×1

java ×1