この特定の問題にはいくつかの原因が考えられるため、すべてのコードがないと、何が失敗しているのかを判断するのは困難です。
これが私のために働くコードです:
(ns test)
(gen-class
:main false
:name test.Company
:methods [[setCompanyName [String] void]])
(defn -setCompanyName [this company] (println (str "company : " company)))
ノート:
- ゲッターは必要ありません
- メソッドのシグネチャは :methods ベクトルで指定されます。
- 関数には追加の「this」パラメーターが必要です
- gen-class マクロは、マクロのパラメーターに基づいてクラスを生成するため、-setCompanyName 関数定義をまったく調べません。
javap コマンドは、生成されている gen-class を確認するのに非常に便利です。
javap.exe -classpath classes/ test.Company
public class test.Company extends java.lang.Object{
public static {};
public test.Company();
public java.lang.String toString();
public boolean equals(java.lang.Object);
public java.lang.Object clone();
public int hashCode();
public void setCompanyName(java.lang.String);
}
また、 http://clojuredocs.org/clojure_core/clojure.core/gen-classの 2 番目の例を見て、状態を管理する方法を確認することをお勧めします。