我目前正在深入研究 Java 类的可访问性。虽然有多种可能性 define classes ,我想知道下面示例的用例。
基本上,AnotherClass
的构造函数是私有(private)的。但是,AnotherClass
有一个静态嵌套类,可以在 PublicClass
类中访问。
这只是我出于好奇而想出的东西,但由于它确实有效,我想知道,为什么我会使用这样的东西?
示例
public class PublicClass {
public PublicClass() {
AnotherClass.AnotherInnerClass innerClass = new AnotherClass.AnotherInnerClass();
innerClass.anotherTest();
}
}
class AnotherClass{
/**
* Private constructor - class cannot be instantiated within PublicClass.
*/
private AnotherClass(){
}
/**
* Static inner class - can still be accessed within package.
*/
static class AnotherInnerClass{
public void anotherTest(){
System.out.println("Called another test.");
}
}
}
注意这些类在同一个文件中。
输出
Called another test.
最佳答案
AnotherInnerClass
可以使用AnotherClass
的私有(private)构造函数。这用于例如 Builder pattern ,这与此类似:
public class Foo {
public Foo() {
Bar.Builder barBuilder = new Bar.Builder();
Bar bar = barBuilder.build();
}
}
public class Bar{
private Bar(..){
}
static class Builder{
public Bar build(){
return new Bar(..);
}
}
}
关于java - 为什么要将私有(private)构造函数与静态嵌套类结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42647967/