在Java接口上调用.class时,将.class传递给Clojure函数

时间:2019-01-26 09:58:06

标签: java clojure clojure-java-interop

我需要将Java接口的.class传递给Clojure中的函数调用。

调用(class)需要对象的实例,在这里我需要静态类名。

基本上,这样我可以进行Java互操作并使用:keysetHandle.getPrimitive(Aead.class);

Java Source method call

Interface to call .class on

传递Aead,但Aead只是这样的接口,但无法弄清楚如何在Clojure中获得等效的Aead.class?

(。getPrimitive keyset-handle Aead.class)

1 个答案:

答案 0 :(得分:4)

您尝试过(.getPrimitive keyset-handle Aead)吗?

您应该仅使用名称即可传递接口的类。 Java类示例:

public class Foo {
    public <P> String bar(Class<P> klass) {
        return klass.getCanonicalName();
    }
}

然后在REPL中,使用java.util.List界面,例如:

user=> (import Foo)
Foo
user=> (.bar (Foo.) java.util.List)
"java.util.List"