Приведение внутреннего дочернего класса к другому внутреннему родительскому классу вне класса - PullRequest
0 голосов
/ 01 апреля 2012

Класс B является внутренним классом для A. Класс B расширяет класс C, который также является внутренним классом для A.

  class A{

     class C{

     }
       class B extends C{

       }

  }.

Как я могу привести объект типа C к типу B из внешнего класса A?Я пытался (AB) objectOfC, но это не работает


Хорошо, поэтому я получаю ошибку, что Java просит меня поставить ")" после "(A.". Когда я это делаюговорит "Незаконное начало выражения.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2012
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!");
        }
    }
}
0 голосов
/ 01 апреля 2012

Вот простой способ вспомнить, как работает приведение:

Ребенок похож на своего родителя - потому что ребенок унаследован от родителя.

Родитель не похож на своего ребенка -- потому что родитель ничего не наследует от своего ребенка.

Следовательно, вы не можете привести C к B - это невозможно в природе и в программировании.

...