«Не найден соответствующий ctor» при попытке заполнить класс Java из Clojure - PullRequest
7 голосов
/ 22 декабря 2011

Я получаю сообщение об ошибке "Не найден соответствующий ctor" при попытке заполнить класс Java из Clojure.

Я хочу заполнить этот класс из 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)

Я следовал этим советам , чтобы получить класс Javaвстроенный в мой код Clojure.Предложения, которые были очень полезны, потому что теперь я могу создать класс Java.

Любые указатели или предложения будут полезны.Я знаю, что ученики должны быть частными, но это для проверки более крупного проекта.

Ответы [ 2 ]

10 голосов
/ 22 декабря 2011

Сделать конструктор общедоступным с помощью модификатора публичного доступа. Кроме того, ваш конструктор не принимает любые аргументы, а просто устанавливает несколько элементов в некоторые значения. Таким образом, теперь вы можете называть его так: (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;
    }
4 голосов
/ 22 декабря 2011

Этот конструктор не принимает аргументов. Вы называете это множеством аргументов. Возможно, вам нужно освежить свою Java или скопировать работающую Java из другого места (если ваша конечная цель - просто упаковать чужую Java в ваш проект).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...