假設我有一個Java方法返回某個父接口的對象。這個函數返回的對象的類沒有記錄,但是有豐富的,有文檔記錄的接口層次結構,它們都擴展了父接口。因此,例如:Java接口上的Clojure Multimethod調度
public class Person {
public IMeal favoriteMeal() { ... }
}
public interface IBreakfast extends IMeal { ... }
public interface ILunch extends IMeal { ... }
public interface IBrunch extends IBreakfast, ILunch { ... }
如果我知道(並且是穩定信心)的基礎對象,我可以寫一個多方法派遣由該方法返回的各種對象:
(defmulti place-setting class)
(defmethod place-setting Omelet [meal] ...)
但是,由於只有接口是公共的,所以我寧願派遣那些接口。有沒有一種(好)的方式來分配接口?也許是這樣的:
(defmulti place-setting magic-interface-dispatch-fn)
(defmethod place-setting IBreakfast [meal] ...)
韋爾普,現在我覺得自己像個白癡。感謝您描述'isa?'部分。那是我錯過的方面。 – user12341234