尝试从Clojure填充Java类时,“找不到匹配的ctor”

尝试从Clojure填充Java类时,我收到“找不到匹配的ctor”错误。

我想从Clojure填充这个类。

import java.util.Date; public class Account { Account() { acct_num = 0; trans_type = 'U'; trans_amt = 0.00; cur_bal = 0.00; last_update = null; } public int acct_num = 0; public char trans_type; public double trans_amt = 0.00; public double cur_bal = 0.00; public Date last_update; } 

我可以导入这个类:

 ba2-app=> (ns ba2-app (:import Account)) Account 

但当我去填充它时,我收到此错误:

 ba2-app=> (:use java.util.Date) nil ba2-app=> (Account. 1000 \C 100.00 0.00 (java.util.Date. "12/21/2011")) java.lang.IllegalArgumentException: No matching ctor found for class Account (NO_SOURCE_FILE:9) 

我按照这些建议来使用我的Clojure代码来构建Java类。 这些建议非常有用,因为我现在可以构建Java类了。

任何指针或建议都会有所帮助。 我知道class级成员应该是私人的,但这是为了测试一个更大的项目。

使用公共访问修饰符使构造函数公开。 你的构造函数也不接受任何 args,只是将一堆成员设置为某些值。 所以你现在实际上只能称它为:( (Account.) (如果它是公开的)。

当你想使用这样的构造函数时:( (Account. 1000 \C 100.00 0.00 (java.util.Date. "12/21/2011"))你将不得不添加一个接受这些类型参数的构造函数:

  public Account(int a, char c, double d1, double d2, Date date) { acct_num = a; trans_type = c; trans_amt = d1; cur_bal = d2; last_update = date; } 

这个构造函数不带参数。 你用很多参数调用它。 可能你需要刷新你的Java,或者从其他地方复制一些工作的Java(如果你的最终目标只是在你的项目中打包别人的Java)。