gpt4 book ai didi

java - 如何将对象实例的类型与泛型进行比较?

转载 作者:太空狗 更新时间:2023-10-29 22:51:35 25 4
gpt4 key购买 nike

我如何用 java 编写这段代码?

public class ComponentsManager 
{
private List<IComponent> list = new ArrayList<IComponent>();

public <U extends IComponent> U GetComponent() {

for (IComponent component : list) {

if(component instanceof U)
{
return component;
}
}
}
}

但我无法对泛型类型执行 instanceof。我该怎么做?谢谢。

最佳答案

由于类型删除,基本上你不能这样做。正常的解决方法是传递一个 Class 对象作为参数;例如

    public <U extends IComponent> U GetComponent(Class<U> clazz) {
for (IComponent component : list) {
if (clazz.isInstance(component)) {
return clazz.cast(component);
}
}
}

您也可以使用 if (clazz.equals(component.getClass())) { ... 但它会进行精确类型匹配 ... 这不是 instanceof 运算符。 instanceof 运算符和 Class.instanceOf 方法都会测试值的类型是否赋值兼容

关于java - 如何将对象实例的类型与泛型进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6029974/

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