在 Java 中,可以通过将类的主构造函数设置为 private
,然后通过类中的 public
static
方法访问它来隐藏类的主构造函数:
public final class Foo {
/* Public static method */
public static final Foo constructorA() {
// do stuff
return new Foo(someData);
}
private final Data someData;
/* Main constructor */
private Foo(final Data someData) {
Objects.requireNonNull(someData);
this.someData = someData;
}
// ...
}
如果不将类分离成一个 public
接口和一个 private
实现,Kotlin 如何能够实现同样的功能?创建构造函数 private
会导致不能从类外部访问它,甚至不能从同一个文件访问它。