Existe-t-il une méthode non-hacky pour déterminer si une classe super classe implémente une interface particulière?ActionScript: Déterminer si superclasse implémente une interface particulière?
Par exemple, supposons que j'ai:
class A extends EventDispatcher implements StuffHolder {
protected function get myStuff():Stuff { ... };
public function getStuff():Array {
if (super is StuffHolder) // <<< this doesn't work
return super['getStuff']().concat([myStuf]);
return [myStuff];
}
class B extends A {
override protected function get myStuff():Stuff { ... };
}
Comment pourrais-je effectuer cette super is StuffHolder
essai d'une manière qui, bien, fonctionne? Dans ce cas, il renvoie toujours true
.
Que faire si vous essayez de le jeter comme StuffHolder au lieu de vérifier? Quelque chose comme si (super comme StuffHolder)? – Sandro
Non, aucun amour - 'super' semble avoir trop de magie pour le faire –
Si EventDispatcher implémenté StuffHolder, vous ne seriez pas en mesure de compiler cela sans 'override' modificateur pour A getStuff .. Signification super l'aurait, de toute façon .. L'héritage est vérifié au moment de la compilation, n'est-ce pas? Pourquoi ne pas savoir si parent implémente une classe? – mrkishi