gpt4 book ai didi

java - 将对象转换为 类型

转载 作者:搜寻专家 更新时间:2023-11-01 03:13:54 30 4
gpt4 key购买 nike

我正在实现一个类的 List 接口(interface),该类将数据存储在 <T> 中类型数组。这会引发将 Collection 作为参数的方法的问题,因为 collection 将其对象存储为 Object .如何转换 ObjectT ?简单的转换不起作用。

class MyCollection<T> implements List<T>{
T[] tab;

MyCollection() {
this.tab = (T[])new Object[10];
}

public boolean addAll(Collection c){
for(Object o : c){
o = (T)o;
for(int i = 0; i < tab.length; i++){
tab[i] = o;
}
}
}

}

我正在努力:

public boolean addAll(Collection<? extends T> c)

但它失败了:

public boolean retainAll(Collection<?> c)因为我不能在这里更改集合类型:/

public boolean retainAll(Collection<?> c){
boolean result = false;
for(T t : c){
}
return result;
}

最佳答案

Is it the right approach ?

是的,这是正确的做法。这就是接口(interface)的定义(除了接口(interface)使用 E ,但这并不重要)。

请注意您的 addAll应该返回 boolean .另外,您不需要输入 addAll你已经实现。改为更改循环:

   for(T o : c){...}

还有你的retainAll应该没问题,只要你返回 boolean .

编辑:

为您的retainAll实现,不需要迭代传入的 Collection<?>并转换为 T .考虑迭代你的 tab支持数组并查看每个实例是否包含在传入的 Collection<?> c 中.如果出于某种原因您绝对需要使用 c 中的项目作为T s,你可以投。

关于java - 将对象转换为 <T> 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4121179/

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