class A {
def test() { println "parent" }
}
@Mixin(A)
class B {
def test() { println "child" }
}
new B().test() // prints "parent", but I am expecting it to print "child"
Cela ressemble à une sorte d'héritage inversé.Groovy :: Les méthodes @Mixin remplacent les méthodes de classe cible
Les mixines ne doivent-ils être utilisés que pour définir de nouvelles méthodes? Je peux bien sûr utiliser l'héritage conventionnel et aller avec extends, mais le cas d'utilisation implique un constructeur de formulaire où chaque domaine a une implémentation de formulaire unique et j'aimerais, dans mon contrôleur d'application, attraper des requêtes de formulaire et faire un MyUniqueDomainForm.mixin DefaultFormMethods (donc je ne doivent définir les méthodes par défaut quand je dois, ainsi que ne pas avoir à importer my.package.app.DefaultFormMethods dans chaque classe de formulaire)
Merci Tim, j'ai supposé que c'était le cas. Groovy "annonce" les mixins comme alternative à l'héritage, mais la méthode implicite parent-overrides-child n'est pas mentionnée (d'après ce que j'ai vu). Donc, on va alors avec l'enfant standard étend parent pour obtenir le comportement souhaité je suppose (c'est-à-dire aucun autre @annotion pour retirer ceci?) – virtualeyes
Aucun problème. Pas que je connaisse ... Autre que d'ajouter une propriété de type 'A' et de la marquer comme' @ Delegate': - / –