当我试图从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)我遵循了these suggestions,用我的Clojure代码构建了Java类。这些建议非常有用,因为我现在可以构建Java类了。
任何指点或建议都会很有帮助。我知道类成员应该是私有的,但这是为了测试一个更大的项目。
发布于 2011-12-22 04:55:12
使用public access修饰符使构造函数成为公共的。此外,您的构造函数不接受任何参数,而只是将一堆成员设置为一些值。因此,您现在实际上只能这样调用它:(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;
}发布于 2011-12-22 04:55:35
此构造函数不接受任何参数。你用了很多参数来调用它。您可能需要温习一下您的Java,或者从其他地方复制一些正在运行的Java (如果您的最终目标只是将其他人的Java打包到您的项目中)。
https://stackoverflow.com/questions/8596122
复制相似问题