小编典典

在Java中在外部类之外创建内部类的实例

java

我是Java新手。

我的文件A.java如下所示:

public class A {
    public class B {
        int k;
        public B(int a) { k=a; }
    }
    B sth;
    public A(B b) { sth = b; }
}

在另一个Java文件中,我试图创建A对象调用

anotherMethod(new A(new A.B(5)));

但是由于某种原因我得到了错误: No enclosing instance of type A is accessible. Must qualify the allocation with an enclosing instance of type A (e.g. x.new B() where x is an instance of A).

有人可以解释我该怎么做吗?我的意思是,我真的需要创建的实例A,然后设置实例,然后将sth实例提供A给方法,还是有另一种方法呢?


阅读 220

收藏
2020-11-19

共1个答案

小编典典

在您的示例中,您有一个内部类,该内部类始终与外部类的实例绑定。

如果您想要的只是嵌套类以提高可读性而不是实例关​​联的一种方式,那么您需要一个静态内部类。

public class A {
    public static class B {
        int k;
        public B(int a) { k=a; }
    }
    B sth;
    public A(B b) { sth = b; }
}

new A.B(4);
2020-11-19