gpt4 book ai didi

java - 使用类型输入创建对象

转载 作者:行者123 更新时间:2023-12-01 19:55:43 24 4
gpt4 key购买 nike

我无法找到如何执行此操作。有人告诉我,类型和类是两个不同的东西,我不知道,但并不让我感到惊讶。当我使用类型变量“M”时,我被告知它需要一个类,而不是一个类型。我愿意以任何方式接受参数。另外,如果有办法获取这些类的数组,那就最好了。

public <M> void addModule()
{
Module module = new M(); // This is the error, other stuff shouldn't matter
module.setStructure(this);
modules.add(module);
}

最佳答案

类型变量(例如示例中的M)是实际类型的占位符。真实类型是在运行时确定的。在您的代码中,编译器不可能知道如何创建 M,因为它不知道它是什么。

您可能需要这样的东西:

interface Module {
void setStructure(ModuleCollection collection);
}

interface ModuleMaker<T extends Module> {
T makeModule();
}

class ModuleCollection {
private final List<Module> modules = new ArrayList<>();

public void addModule(ModuleMaker<?> maker) {
Module module = maker.makeModule();
module.setStructure(this);
modules.add(module);
}
}

关于java - 使用类型输入创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59043581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com