2013-04-29 3 views
3

Я разбираю JSON и нахожусь в исключении, говоря, что у меня нет конструктора по умолчанию для одного из моих сущностей. Вот код:Публичный конструктор для вложенного класса

public class MyPromosResponse extends BaseResponse { 

    public MyPromosResponseData response; 

    public MyPromosResponse() { 
    } 

    public TreeSet<Promo> getMyPromosResponseData() { 
     return new TreeSet<Promo>(response.getEvents()); 
    } 

    @JsonIgnoreProperties(ignoreUnknown = true) 
    class MyPromosResponseData { 
     public ArrayList<Promo> events; 
     public ArrayList<Table1PromoData> Table1; 

     public MyPromosResponseData() { 
     } 

     public ArrayList<Promo> getEvents() { 
      return events; 
     } 

     ArrayList<Table1PromoData> getTable1() { 
      return Table1; 
     } 

    } 

    class Table1PromoData { 
     public int id; 
     public int eventid; 
     public int cardholderid; 

     public Table1PromoData() { // Here is the constructor. 
     } 

     public int getId() { 
      return id; 
     } 

     public void setId(int id) { 
      this.id = id; 
     } 

     public int getEventid() { 
      return eventid; 
     } 

     public void setEventid(int eventid) { 
      this.eventid = eventid; 
     } 

     public int getCardholderid() { 
      return cardholderid; 
     } 

     public void setCardholderid(int cardholderid) { 
      this.cardholderid = cardholderid; 
     } 
    } 

} 

Когда я Table1PromoData как вложенный класс у меня есть ошибки конструктор по умолчанию не может быть найден, но есть общественный конструктор, определенный. Если я переведу его в отдельный файл, все в порядке - lib находит конструктор.

Почему конструктор по умолчанию становится видимым после того, как я переместил его в отдельный файл?

+2

Сделайте свой вложенный класс ' static'. –

+0

@ Сотириос, спасибо, он работает после того, как я установил его как статический. – Eugene

+0

@silk Добро пожаловать, ответьте на вопрос Zim-Zam. –

ответ

3

Я столкнулся с проблемами с JSON сериализаторов (в частности, Джексон), если мои внутренние классы не являются статичными - по-видимому, если ваш внутренний класс не является статическим, то конструктор по умолчанию получает сброшенные до

9

Поскольку внутренние классы также могут быть общедоступными, частными или защищенными. Если вы не укажете, его частный и не может быть замечен вне класса. Вы должны объявить класс общедоступным.

+0

Звучит очень разумно, но это не помогло, пока я не установил его как 'static'. – Eugene

Смежные вопросы