我可以在java中的静态嵌套类之间限制对私有字段的访问吗?
如果我有一个包含两个我可以在java中的静态嵌套类之间限制对私有字段的访问吗?,java,Java,如果我有一个包含两个静态嵌套类的类,有没有办法限制一个类中的私有静态字段从另一个类访问?例如: public class Outer { private static class Inner1 { private static int privateInner1 = 0; private Inner1() { System.out.println(privateInner1 + ", " + Inner2.privateInner2); // print
静态
嵌套类的类,有没有办法限制一个类中的私有静态
字段从另一个类访问?例如:
public class Outer {
private static class Inner1 {
private static int privateInner1 = 0;
private Inner1() {
System.out.println(privateInner1 + ", " + Inner2.privateInner2); // prints "0, 1"
}
}
private static class Inner2 {
private static int privateInner2 = 1;
}
public static void main(String[] args) {
new Inner1();
}
}
并不是说我脑子里真的有这个用例,我只是个古玩
谢谢 不可能,您可以提供的最少访问权限是
private
(您已经提供了),并且由于您尝试在同一个类中访问它们,因此您无法阻止它们访问,毕竟它们是属于同一个家族的成员 你不能。当外部类的某些功能在另一个类中提取时更清晰,但它仍然与外部类紧密耦合时,可以使用内部类。因此,基本上,您应该在外部类中使用内部类来实现更好的代码分离 来自
私有类成员或构造函数只能在
顶级类的主体(§7.6),包含以下声明:
成员或构造函数
您不能限制从外部类访问内部类,因为外部类可以访问内部类的成员(无论是公共的还是私有的)。在这个场景中,主方法是Outer
的一部分,因此它将能够访问Inner1
和Inner2
的成员。最接近目标的方法是在外部类中创建接口实例,并在其中定义成员变量。外部类将无法访问这些成员变量。举个例子
private interface Example{
void doSomething();
}
private Example Inner3 = new Example(){
private int privateInner3 = 2;
public void doSomething(){
System.out.println(privateInner3);
}
}
现在在您的main方法中,您将无法访问
Inner3.privateInner3
,但您可以调用Inner3.doSomething()
请访问此答案以获得更清晰的信息@Munish我没有问私有静态变量的用途是什么