My Clojure kodunda Statik bir yöntem (staticMethod
olarak adlandırılır) içeren bir sınıf dosyası oluşturmak isterim. Bu, daha sonra Java programından statik bir bağlamda çağrılır. https://kotka.de/blog/2010/02/gen-class_how_it_works_and_how_to_use_it.html günüClojure’ın Gen sınıfı ile nasıl statik yöntemler üretilir?
package com.stackoverflow.clojure;
public class TestGenClassTest {
private TestGenClassTest() {
}
public static void main(String[] args) {
TestGenClass.staticMethod("Static call from Java!", " :END");
}
}
okudum:
meta ekleyerek - #^{aracılığıyla:
(ns com.stackoverflow.clojure.testGenClass (:gen-class :name com.stackoverflow.clojure.TestGenClass :prefix "java-" :methods [ [#^{:static true} staticMethod [String String] String] ])) (def ^:private pre "START: ") (defn #^{:static true} java-staticMethod [this text post] (str pre text post))
ve (Java):
I (Clojure) çalıştı statik true} - bir yöntem beyanına da statik yöntemleri tanımlayabilirsiniz.
Java derleyici her zaman söylediği #^{:static true}
koymak olursa olsun:
türünden statik olmayan yöntem durukyöntem statik bir referans (dize, String) Gelemeyenler TestGenClass
Clojure'daki statik yöntemleri nasıl tanımlarım? #^{:static true}
ve ^:static
'un anlamı nedir? Bu nerede belgelenmiştir?
:methods [^:static [staticMethod [String String] String] ]
öz ifadeler Bu tür Clojure belgelerin ne yazık ki tipik: Kotka yöntemini beyanı açıklama için bahsedilen zaman
Meta verileri tam olarak nereye koymaya çalıştınız? Son soruya BTW cevabı kolaydır: http://clojure.org/metadata –
İlk: '' method'-kısmında '' gen-class' 've ikincisi fonksiyon tanımında ('defn'). – Edward
Tamam --- denediğin tek yol, geçerli soru durumun yolunu buluyorsa, sonra şunu deneyin: ': yöntemler [^: statik [statikMethod [Dize Dize] Dize]]' –