编程语言
首页 > 编程语言> > 在java中创建外部类外部的内部类的实例

在java中创建外部类外部的内部类的实例

作者:互联网

参见英文答案 > Java – No enclosing instance of type Foo is accessible                                    5个

我是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)));

但由于某种原因,我得到错误:无法访问类型A的封闭实例.必须使用类型A的封闭实例限定分配(例如x.new B(),其中x是A的实例).

有人可以解释我怎么能做我想做的事情?我的意思是,我真的需要创建A的实例,然后设置它,然后将A的实例提供给方法,还是有其他方法可以做到这一点?

解决方法:

在您的示例中,您有一个内部类,它始终绑定到外部类的实例.

如果,您想要的只是嵌套类以实现可读性而非实例关联的方式,那么您需要一个静态内部类.

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);

标签:java,class,inner-classes
来源: https://codeday.me/bug/20191008/1870505.html