当我想创建对象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


谢谢您的帮助:)

最佳答案

您在TransLog类中将TransactionLogger类声明为非静态内部类。

这意味着TransLog类具有隐式成员变量
引用封闭的TransactionLogger实例,
并且构造函数具有该类型的隐式附加参数。

看来您不想要那样。
因此,您需要将内部类声明为static

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

    private int x;
    private int y;
}

关于java - java.lang.InstantiationException尽管存在NoArgsConstructor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53875094/

10-10 20:13