gpt4 book ai didi

Java 反射 - 构造对象并添加到列表

转载 作者:行者123 更新时间:2023-12-03 07:59:41 25 4
gpt4 key购买 nike

具有此签名的方法构造一个类 objClass 的对象,它位于 BaseModel 层次结构中的某处,并使用 ?扩展 BaseModel 对象。

public void constructAndAdd(List<? extends BaseModel> list, Class objClass)
{
BaseModel newObject = (BaseModel)objClass.newInstance();
list.add(newObject);
}

错误:

The method add(capture#2-of ? extends BaseModel) in the type List<capture#2-of ? extends BaseModel> is not applicable for the arguments (BaseModel)

我希望我能做到

? extends BaseModel newObject = (? extends BaseModel)objClass.newInstance();

但是那个语法是错误的。

最佳答案

编译器无法知道 ? 是类的同一类型。

您需要使方法本身成为通用的,以便您可以实际引用该类型:

public <T extends BaseModel> void constructAndAdd(List<? super T> list, Class<? extends T> objClass) {
list.add(objClass.newInstance());
}

一旦你这样做了,你根本不需要任何转换。

关于Java 反射 - 构造对象并添加到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34485464/

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