java.lang.InstantiationException, хотя присутствует NoArgsConstructor - PullRequest
0 голосов
/ 20 декабря 2018

, когда я хочу создать экземпляр моего объекта TransLog, создается InstantiationException, даже если я создал конструктор No-Args в классе TransLog:

Caused by: java.lang.NoSuchMethodException: TransactionLogger$TransLog.<init>()
        at java.lang.Class.getConstructor0(Class.java:3082)
        at java.lang.Class.newInstance(Class.java:412)
        ... 20 more
@AllArgsConstructor
private class TransLog {
  public TransLog() {
  } 

  private int x; 
  private int y;
}

Я создаю экземпляр следующим образом:

TransLog log = (TransLog) clazz.newInstance(); // clazz is TransLog.class

Заранее спасибо за помощь:)

1 Ответ

0 голосов
/ 20 декабря 2018

Вы объявили свой класс TransLog как нестатический внутренний класс в классе TransactionLogger.

Это означает, что класс TransLog имеет неявную переменную-член, ссылающуюся навключающий TransactionLogger экземпляр, и конструкторы имеют неявный дополнительный аргумент этого типа.

Кажется, вы этого не хотите.Поэтому вам нужно объявить внутренний класс как static:

@AllArgsConstructor
private static class TransLog {
    public TransLog() {
    }

    private int x;
    private int y;
}
...