gpt4 book ai didi

java - 从对象、泛型类和通配符进行未经检查的转换

转载 作者:行者123 更新时间:2023-11-29 05:37:03 25 4
gpt4 key购买 nike

这是我的代码:

public class ArrayTaskList<E> {
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ArrayTaskList<E> other = (ArrayTaskList<E>) obj;
if (!Arrays.equals(db, other.db))
return false;
return true;
}
}

编译器说:

Type safety: Unchecked cast from object to arraytasklist

我明白,这只是一个警告,但如果我尝试这段代码,则没有警告:

ArrayTaskList<?> other = (ArrayTaskList<?>) obj;

是不是更方便的解决方案?

最佳答案

不同之处在于原始类型对象不是类型安全的,而无限通配符为您提供类型安全。

例如,对于原始类型,您可以使用如下代码:

List list = new ArrayList<String>();
list.add(42); // integer
list.add(true); // boolean
list.add(whateverYouWant); // whatever you want

这段代码:

List<?> list2 = new ArrayList<String>();
list2.add(42);
list2.add(true);

会导致编译错误。

关于java - 从对象、泛型类和通配符进行未经检查的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19119900/

25 4 0
文章推荐: php - 从数据库动态填充