java.lang.InstantiationException 尽管存在 NoArgsConstructor
java.lang.InstantiationException although a NoArgsConstructor is present
当我想创建对象 TransLog
的实例时,即使我在 class TransLog
中创建了无参数构造函数,也会抛出 InstantiationException
:
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
提前感谢您的帮助:)
您将 TransLog
class 声明为 非静态 内部 class TransactionLogger
class.
也就是说TransLog
class有一个隐含的成员变量
引用封闭的 TransactionLogger
实例,
并且构造函数具有该类型的隐式附加参数。
看来你不想要那个。
因此,您需要将内部 class 声明为 static
:
@AllArgsConstructor
private static class TransLog {
public TransLog() {
}
private int x;
private int y;
}
当我想创建对象 TransLog
的实例时,即使我在 class TransLog
中创建了无参数构造函数,也会抛出 InstantiationException
:
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
提前感谢您的帮助:)
您将 TransLog
class 声明为 非静态 内部 class TransactionLogger
class.
也就是说TransLog
class有一个隐含的成员变量
引用封闭的 TransactionLogger
实例,
并且构造函数具有该类型的隐式附加参数。
看来你不想要那个。
因此,您需要将内部 class 声明为 static
:
@AllArgsConstructor
private static class TransLog {
public TransLog() {
}
private int x;
private int y;
}