java中抽象嵌套类的访问

java中抽象嵌套类的访问,java,class,nested,abstract,Java,Class,Nested,Abstract,假设我有一个班,比如说a班,这是一个普通班 现在A嵌套A类B,B类嵌套C类 类B是一个抽象类,而A、C则不是 现在,不能为B创建对象,因为它是一个抽象类 但除非我为B类创建对象,否则我将无法为C类创建对象。 既然 因为B没有对象,所以在这种情况下outerclass对象“out”不可用 那么如何为C创建对象呢?单向: public class A { abstract class B { abstract String get(); class C {

假设我有一个班,比如说a班,这是一个普通班

现在A嵌套A类B,B类嵌套C类

类B是一个抽象类,而A、C则不是

现在,不能为B创建对象,因为它是一个抽象类

但除非我为B类创建对象,否则我将无法为C类创建对象。 既然

因为B没有对象,所以在这种情况下outerclass对象“out”不可用

那么如何为C创建对象呢?

单向:

public class A {
    abstract class B {
        abstract String get();
        class C {
            void run() {
                System.out.println(get());
            }
        }
    }

    public static void main(String[] args) {
        new A().new B(){ String get() { return "hi"; } }.new C().run();
    }
}
或者,使用与上述相同的A、B和C:

class ConcreteB extends B {
    String get() {
        return "I'm not anonymous!";
    }
}

public static void main(String[] args) {
    new A().new ConcreteB().new C().run();
}

让C成为一个静态类,那么你就可以像B一样访问它。new C()它真的是一个用例还是一个虚构的例子?有了这个实现,你需要为类中的所有“抽象”方法提供实现B@rahulroc:当然,这就是我在两个例子中都这么做的原因。因此,我认为我在问题的注释中提供的解决方案可能是一个更好的解决方案,前提是他可以更改类定义。@rahulroc:可能,但这也假设C不需要封闭的B实例,就像我在示例中所做的那样。
class ConcreteB extends B {
    String get() {
        return "I'm not anonymous!";
    }
}

public static void main(String[] args) {
    new A().new ConcreteB().new C().run();
}