En Java, il est possible de cacher un principal constructeur de classe en le rendant private
puis d'y accéder via une méthode public
static
dans cette classe:constructeur privé dans Kotlin
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;
}
// ...
}
Comment la même chose peut être atteint avec Kotlin sans séparer la classe en une interface public
et une implémentation private
? Faire un constructeur private
le conduit à ne pas être accessible depuis l'extérieur de la classe, même pas depuis le même fichier.