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.
Vous devez vous connecter pour publier un commentaire.
Comme le la documentation dit vous l'utilisez comme en java:
MODIFIER
Je pense que vous pouvez obtenir ce que vous voulez faire quelque chose comme ceci:
Selon Bernardo réponse, vous pourriez avoir quelque chose comme ça. Il n'a pas de changements remarquables.
Ce qui est plus, dans la future version 1.2, vous pouvez simplement utiliser
Ne sais pas si il est possible d'obtenir la référence à la classe super fonction, mais ici, c'est une alternative à ce que vous voulez atteindre: