Clojure 1.6 के रूप में, वरीय दृष्टिकोण इस प्रकार होगा। मान लें कि आप अपने classpath, Clojure 1.6 जार और निम्नलिखित clojure फ़ाइल (या इसके संकलित समकक्ष) पर है,:
package my.other.java.package.or.maybe.the.same.one;
import my.java.package.Doer;
import clojure.lang.IFn;
import clojure.java.api.Clojure;
public class ClojureDoerUser {
// First, we need to instruct the JVM to compile/load our
// Clojure namespace. This should, obviously, only be done once.
static {
IFn require = Clojure.var("clojure.core", "require");
require.invoke(Clojure.read("my.clojure.namespace"));
// Clojure.var() does a somewhat expensive lookup; if we had more than
// one Clojure namespace to load, so as a general rule its result should
// always be saved into a variable.
// The call to Clojure.read is necessary because require expects a Clojure
// Symbol, for which there is no more direct official Clojure API.
}
// We can now lookup the function we want from our Clojure namespace.
private static IFn doerFactory = Clojure.var("my.clojure.namespace", "reify-doer");
// Optionally, we can wrap the doerFactory IFn into a Java wrapper,
// to isolate the rest of the code from our Clojure dependency.
// And from the need to typecast, as IFn.invoke() returns Object.
public static Doer createDoer() {
return (Doer) doerFactory.invoke();
}
public static void main(String[] args) {
Doer doer = (Doer) doerFactory.invoke();
doer.doSomethin("hello, world");
}
}
स्रोत
2014-05-11 17:06:12
धन्यवाद:
तो जावा से, है, आप इसे इस रूप में यहां पहुंच सकता है मेरी मदद करने के लिए हर कोई! मैं Reify का उपयोग कर समाप्त हो गया और क्लोजर में मुख्य समारोह लिखा था। क्लोजर अविश्वसनीय रूप से अच्छा है! –