我知道這是一個愚蠢的例子,但我很想知道代理方法正在發生什麼。代理傳遞兩個抽象類時的奇怪行爲
我已經設置了兩個呼叫到代理:
1. (DEF CP (代理[java.util.AbstractMap中clojure.asm.ClassVisitor] []))
2. ( def cp (proxy [clojure.asm.ClassVisitor java.util.AbstractMap] []))
第一個調用很好......並且它返回cp。第二次電話會給我一個例外。
clojure.lang.Compiler $ CompilerException:java.lang.IncompatibleClassChangeError:實施類,編譯:(/私有的/ var /文件夾/ DD/qfdy6sbn3mlgk20vcxc3j0ljnpxsqr/T /形狀init4780219965491827451.clj:2:5) 的java。 lang.IncompatibleClassChangeError:實現類 java.lang.ClassLoader.defineClass1 ClassLoader.java
需要java.lang.ClassLoader.defineClass ClassLoader.java:800 需要java.lang.ClassLoader.defineClass ClassLoader.java:643 clojure.lang.DynamicClassLoader .defineClass DynamicClassLoader.java:46 clojure.core/get-proxy-class core_proxy.clj:262
下面發生了什麼?