我知道我们可以嵌套一个类来访问它的私有字段和方法,比如下面的例子,它编译得很好:
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
:使用软件包解决了这个问题。
答案 0 :(得分:-2)
您可以在定义B时使用static关键字。如果没有静态,B就是内部类;使用static,B是嵌套类。嵌套类不能像内部类一样访问封闭类的私有实例字段。
您还可以将B()构造函数的范围更改为默认值,以便A可以看到它。但是,根据我的经验,在一个文件中有两个顶级类型没有完成。