将内部子类强制转换为类外的另一个内部父类

时间:2012-04-01 01:24:24

标签: java casting inner-classes

B类是A的内部类.B类扩展了C类,它也是A的内部类。

  class A{

     class C{

     }
       class B extends C{

       }

  }.

如何从类A外面将类型C的对象转换为B类? 我正在尝试(A.B)objectOfC,但这不起作用


好的,我得到的错误是java要求我把“()”放在“(A。”之后。当我这样做时,它说“非法表达的开始。”

2 个答案:

答案 0 :(得分:2)

class A {
    class C {}
    class B extends C {}
    B b() {
        return new B();
    }
}
public class So9961167 {
    public static void main(String[] args) {
        A a=new A();
        A.C b=a.b();
        if(b instanceof A.B) {
            A.B b2=(A.B)b;
            System.out.println("it worked!");
        }
    }
}

答案 1 :(得分:0)

这是一种记住投射方式的简单方法:

孩子就像他的父母 - 因为孩子从父母那里继承。

父母与他的孩子不一样 - 因为父母没有从他的孩子那里继承任何东西。

因此,你无法将C转换为B - 这在本质和编程中是不可能的。