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

Java 将内部子类强制转换为类外的另一个内部父类,java,casting,inner-classes,Java,Casting,Inner Classes,B类是A的内部类。B类扩展了C类,C类也是A的内部类 class A{ class C{ } class B extends C{ } }. 如何从类A之外将C类型的对象强制转换为B类型? 我正在尝试(A.B)objectOfC,但这不起作用 好的,我得到的错误是java要求我将“)”放在“(A.”之后。当我这样做时,它会说“表达式的非法开始”。这里有一个简单的方法来记住强制转换是如何工作的: 孩子就像他的父母——因为孩子是从父

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

  class A{

     class C{

     }
       class B extends C{

       }

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



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

这里有一个简单的方法来记住强制转换是如何工作的:

孩子就像他的父母——因为孩子是从父母那里继承来的

父母不像他的孩子——因为父母没有从他的孩子那里继承任何东西


因此,不能将C强制转换为B—这在本质上和编程中都是不可能的。

为什么要尝试向下转换?(即从基类转换为派生类)我知道我试图转换的对象是类型B,我想对其调用一个方法,该方法特定于类B(子类),而不是类C(父类)。我不能在C中实现该方法,那么我必须在扩展C的其他类中重写它,我不希望这样。如果你知道你有一个
B
的实例,那么为什么不保留对a
B
的引用,而不是对a
C
的引用?还有,“不工作”是什么意思“?1.我没有保留引用bec。在我的程序中,我试图投射的对象只有一次是另一种类型(例如D)这也扩展了C,对于程序的其余部分是B.2。如果底层对象真的是a
B
,那么你可以生成错误。你可以,我在类a内部完成了,并且工作正常,没有问题。但是当我在类外部时,我面临的问题是这在类C内部工作,但在外部,行:a.B b2=(a.B)B;java说:“)”我想你是对的!是编译器的错!!!我使用的是Dr.Java,jdk 5.0,当我转向Eclipse时,它可以工作了。谢谢!!!!
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!");
        }
    }
}