1

我将一个类作为参数传递给一个方法,我需要创建该类的一个实例,例如

public void setPiece(int i0, int j0, Class<Piece> pieceClass) {
        Piece p = null;
        try {
            Constructor<pieceClass> constructor = new Constructor<>(argTypes);
            p = constructor.newInstance(args);
        } catch (InstantiationException | IllegalAccessException e) {
            e.printStackTrace();
        }
        // other stuff
    }

但它不会接受这种语法。<> 里面的参数需要是一个类,而不是类对象,所以我不知道该怎么做。

我见过人们使用pieceClass.newInstance();看起来可能有用的东西,但它已被弃用,IntelliJ 建议使用 Constructor 类。我只是好奇是否可以将此参数类作为泛型的参数传递,我无法在网上找到任何东西。

4

1 回答 1

3

啊,您误读了如何制作 Constructor 实例。你不能让new他们起来——你向班级要求。看起来像这样:

try {
  Constructor<Piece> ctr = pieceClass.getConstructor(argTypes);
  p = constructor.newInstance(args);
} catch (InstantiationException | IllegalAccessException e) {
  throw new RuntimeException("uncaught", e);
}

注意:e.printStackTrace();因为 catch 块中的唯一行非常糟糕(程序继续在您显然没有预料到并且不知道的状态下运行。这是一个非常非常愚蠢的想法。停止这样做,并修复您的 IDE 以便它不再为你填写。我上面写的catch块是catch块的一个很好的默认值。

于 2022-01-04T23:47:22.747 回答