我希望我的程序在原始类型和它们的包装类之间表现不同,例如:
(defmulti try-type class)
(defmethod try-type Integer [arg]
(println "Integer"))
(defmethod try-type Integer/TYPE [arg]
(println "int"))
然而,尽管我尝试使用Integer和int两种方式,但它并不起作用。
user=> (try-type (.intValue (int 2)))
Integer
nil
user=> (try-type (int 2))
Integer
nil
那么,能否分派多方法在原始类型上?
======编辑======
我正在将Google Guava封装到Clojure中。其中有一个原始库,例如Booleans、Doubles、Ints等。它们有一些共同的方法,所以我想尝试使用多方法。