有没有办法让一个类的私有方法可以访问另一个类而不嵌套它?

时间:2018-05-23 20:23:07

标签: java

我知道我们可以嵌套一个类来访问它的私有字段和方法,比如下面的例子,它编译得很好:

public class Outer {
    Inner inner = new Inner();

    public class Inner {
        private Inner() {

        }
    }
}

然而,我想要实现的是这样的:

public class A {
    B b = new B();
}

class B {
    private B() { // error: B() has private access in B

    }
}

我知道在C ++中,我们可以使用friend关键字,但我知道Java中没有朋友或朋友。那么我该如何实现呢?

Update #1:上面的两个代码段不在一个Java文件中。它们只是两个独立的例子。对不起,感到困惑。

Update #2:使用软件包解决了这个问题。

1 个答案:

答案 0 :(得分:-2)

您可以在定义B时使用static关键字。如果没有静态,B就是内部类;使用static,B是嵌套类。嵌套类不能像内部类一样访问封闭类的私有实例字段。

您还可以将B()构造函数的范围更改为默认值,以便A可以看到它。但是,根据我的经验,在一个文件中有两个顶级类型没有完成。