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

oct*_*bus 7 java clojure

尝试从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;
}
Run Code Online (Sandbox Code Playgroud)

我可以导入这个类:

ba2-app=> (ns ba2-app (:import Account))
Account
Run Code Online (Sandbox Code Playgroud)

但是当我去填充它时,我收到这个错误:

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)
Run Code Online (Sandbox Code Playgroud)

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

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

Mic*_*ent 10

使用公共访问修饰符使构造函数公开.你的构造函数也不接受任何 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;
    }
Run Code Online (Sandbox Code Playgroud)