java.lang.InstantiationException, хотя присутствует NoArgsConstructor

124
11

когда я хочу создать экземпляр моего объекта 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

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

спросил(а) 2021-01-25T18:17:55+03:00 4 месяца, 2 недели назад
1
Решение
63

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

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

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

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

private int x;
private int y;
}

ответил(а) 2021-01-25T18:17:55+03:00 4 месяца, 2 недели назад
-4

Вы пытались перезагрузить компьютер? ALT + F4 также должен работать нормально.

ответил(а) 2021-01-25T18:17:55+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема