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;
}