当我想创建对象 TransLog
的实例时,即使我在类 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
类声明为 TransactionLogger
类中的非静态内部类。
这意味着TransLog
类有一个隐式成员变量
引用封闭的 TransactionLogger
实例,
并且构造函数有一个该类型的隐式附加参数。
看来你不希望这样。
因此,您需要将内部类声明为static
:
@AllArgsConstructor
private static class TransLog {
public TransLog() {
}
private int x;
private int y;
}
关于尽管存在 NoArgsConstructor,但出现 java.lang.InstantiationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53875094/