Springbean初始化-Clojure

Springbean初始化-Clojure,spring,clojure,Spring,Clojure,我有一个clojure类,我使用Springbean初始化来初始化它 我的setter方法如下 (defn-setCompanyName[货币](println(str“company:”company))) Bean初始化如下 我有以下错误 bean类[test.Company]:bean属性的属性“companyName”无效 “companyName”不可写或具有无效的setter方法。做 setter的参数类型与getter的返回类型匹配吗 有人知道这个问题的根本原因吗 问候 Isu

我有一个clojure类,我使用Springbean初始化来初始化它

我的setter方法如下

(defn-setCompanyName[货币](println(str“company:”company)))

Bean初始化如下


我有以下错误

bean类[test.Company]:bean属性的属性“companyName”无效 “companyName”不可写或具有无效的setter方法。做 setter的参数类型与getter的返回类型匹配吗

有人知道这个问题的根本原因吗

问候
Isuru.

这个问题有几个可能的原因,因此如果没有所有的代码,很难说什么是失败的

以下是适用于我的代码:

(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类生成了什么:

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);
}

我还建议您查看上的第二个示例,了解如何管理状态。

您不需要另一个函数参数吗?第一个用作“this”指针。我现在不能测试这个,因为我在打电话

你确定不需要getter吗?这个错误明确地提到了它,根据我的经验,与JavaBean相关的代码经常需要它。
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);
}