La méthode Références de la Super Méthode de Classe

Comment utiliser la méthode des références à consulter pour super les méthodes de la classe?

Dans Java 8, vous pouvez faire SubClass.super::method.

Quelle serait la syntaxe de Kotlin?

Avec impatience votre réponse!

Conclusion

Merci à Bernard Rocha!
La syntaxe est SubClass::method.

Mais soyez prudent. Dans mon cas, le sous-classe d'une classe générique. N'oubliez pas de le déclarer comme ceux:

MySubMap<K, V>::method.

MODIFIER

Cela ne fonctionne toujours pas dans Kotlin.

Le sien un exemple en Java 8 d'une méthode de référence pour une super méthode de classe:

public abstract class SuperClass {
    void method() { 
        System.out.println("superclass method()");
    }
}

public class SubClass extends SuperClass {
    @Override
    void method() {
        Runnable superMethodL = () -> super.method();
        Runnable superMethodMR = SubClass.super::method;
    }
}

Je ne suis pas encore en mesure de faire la même chose dans Kotlin...

MODIFIER

Ceci est un exemple de la façon dont j'ai essayé de l'atteindre en Kotlin:

open class Bar {
    open fun getString(): String = "Hello"
}

class Foo : Bar() {

    fun testFunction(action: () -> String): String = action()

    override fun getString(): String {
        //this will throw an StackOverflow error, since it will continuously call 'Foo.getString()'
        return testFunction(this::getString)
    }
}

Je veux avoir quelque chose comme ça:

...
    override fun getString(): String {
        //this should call 'Bar.getString' only once. No StackOverflow error should happen.
        return testFunction(super::getString)
    }
...

Conclusion

Il n'est pas possible de le faire en Kotlin encore.

J'ai soumis un rapport spécial. Il peut être trouvé ici: KT-21103 Méthode de Référence pour la Classe Super Méthode

  • Pouvez-vous nous montrer comment vous essayez de le faire dans Kotlin?
  • Assurez-vous. J'ai ajouté un exemple à ma question.
InformationsquelleAutor Poweranimal | 2017-10-25