En Java, il est possible de cacher le constructeur principal d'une classe en le rendant private
puis d'y accéder via un public
static
dans cette classe :
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 obtenir la même chose avec Kotlin sans séparer la classe en un fichier public
et une interface private
l'implémentation ? Création d'un constructeur private
conduit à ce qu'il ne soit pas accessible de l'extérieur de la classe, pas même du même fichier.