java.lang.InstantiationException, хотя присутствует NoArgsConstructor
Когда я хочу создать экземпляр моего объекта 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 ответ
Решение
Вы объявили свой TransLog
класс как нестатический внутренний класс в пределах TransactionLogger
учебный класс.
Это означает, что TransLog
класс имеет неявную переменную-член, ссылающуюся на окружающий TransactionLogger
экземпляр, и конструкторы имеют неявный дополнительный аргумент этого типа.
Кажется, ты этого не хочешь. Поэтому вам нужно объявить внутренний класс как static
:
@AllArgsConstructor
private static class TransLog {
public TransLog() {
}
private int x;
private int y;
}