gpt4 book ai didi

java - 转换为通用类型 (T) 给出 "unchecked cast"警告

转载 作者:搜寻专家 更新时间:2023-10-31 19:28:38 24 4
gpt4 key购买 nike

我在这里遇到了一个关于带有列表的泛型有界类型的小问题。请帮忙!

模型.java

public class Model {
}

A类.java

public class ClassA<T extends Model> {
private List<T> models;

public ClassA() {
models.add((T) new Model());
}
}

它在这一行给我一个从 Model 到 T 的未经检查的转换警告:

models.add((T) new Model());

我知道我收到此警告是因为我可以安全地将所有内容从子类转换为父类(super class),但反之则不行。

有什么办法可以解决这个问题,或者我可以安全地取消警告吗?

最佳答案

你不能做你想做的事。

由于 TModel 的子类:

  • 每个 T 都是一个 Model
  • 但不是每个 Model 都是一个 T.

具体来说:

如果您通过调用 new Model() 构造一个新模型,该实例就是一个模型,而不是任何子类的实例。

子类扩展父类(super class)的地方,你永远无法成功地做到这一点:

(Subclass) new Superclass();

因此,您无法成功地将新模型转换为 T 的实例。

编译器只会给你一个警告,你可以忽略或禁止,但是当你运行你的程序并调用 add()ClassCastException> 方法。

关于java - 转换为通用类型 (T) 给出 "unchecked cast"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19032215/

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