Constructeur privé dans Kotlin

En Java, il est possible de masquer une classe principale de constructeur en la rendant private et puis y accéder via un public static méthode à l'intérieur de 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 peuvent même être atteint avec Kotlin, sans séparer la classe en un public interface et un private mise en œuvre? Faire un constructeur private conduit à ne pas être accessible depuis l'extérieur de la classe, pas même à partir du même fichier.

OriginalL'auteur Marvin Meller | 2017-10-20