Dites que j'ai une méthode Java qui renvoie un objet de l'interface parent. Les classes des objets retournés par cette fonction sont non documentées, mais il existe une hiérarchie riche et bien documentée d'interfaces qui étendent l'interface parent. Ainsi, par exemple:Répartition de Clojure Multimethod sur l'interface Java
public class Person {
public IMeal favoriteMeal() { ... }
}
public interface IBreakfast extends IMeal { ... }
public interface ILunch extends IMeal { ... }
public interface IBrunch extends IBreakfast, ILunch { ... }
Si je savais (et était confiant dans la stabilité) les objets sous-jacents, je pourrais écrire un multiméthode à être envoyé sur les différents objets retournés par cette méthode:
(defmulti place-setting class)
(defmethod place-setting Omelet [meal] ...)
Cependant, comme seules les interfaces sont publiques, je préfère les envoyer. Existe-t-il un (bon) moyen de distribuer sur les interfaces? Peut-être comme:
(defmulti place-setting magic-interface-dispatch-fn)
(defmethod place-setting IBreakfast [meal] ...)
Welp, maintenant je me sens comme un idiot. Merci d'avoir décrit la partie 'isa? C'était l'aspect qui me manquait. – user12341234