LazyList.decorate - InstantiateFactory: конструктор должен существовать и быть публичным исключением - PullRequest
1 голос
/ 18 февраля 2011

У меня есть этот код:

public class User   
...
private List<Country> countries = LazyList.decorate(new ArrayList(), FactoryUtils.instantiateFactory(Country.class));
    private String country;

...
public void setCountries(List<Country> countries) {
        this.countries = countries;
    }

    public List<Country> getCountries() {
        return countries;
    }
...

В классе страны:

public class Country {

    private int countryId;
    private String countryName;

    public Country(int countryId, String countryName)
    {
        this.countryId = countryId;
        this.countryName = countryName;
    }

    public int getCountryId() {
        return countryId;
    }

    public void setCountryId(int countryId) {
        this.countryId = countryId;
    }

    public String getCountryName() {
        return countryName;
    }

    public void setCountryName(String countryName) {
        this.countryName = countryName;
    }

}

Когда я создаю новый объект User, я даю следующее исключение:

java.lang.IllegalArgumentException: InstantiateFactory: конструктор должен существовать и быть открытым

Кто-нибудь знает почему?

1 Ответ

3 голосов
/ 18 февраля 2011

Похоже, единственный ваш конструктор:

public Country(int countryId, String countryName)

пока фабрика ожидает найти конструктор без аргументов (общее требование):

public Country()

Добавьте его в свой Country класс, и все будет в порядке.

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