JAVA泛型ArrayList.add

yuanyuan11081208 2019-12-09 09:03:51
import java.util.ArrayList;
import java.util.Iterator;

public class test <T> {

public ArrayList<T> list=new ArrayList<>();

private Iterator<T> it =list.iterator();

public <T> void Add (T name)
{

this.list.add(name);

System.out.println(name);
}

}
不知道为什么标红的那句会报错
...全文
91 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序yang 2019-12-10
  • 打赏
  • 举报
回复
楼上言之有理
jiawenhe123 2019-12-10
  • 打赏
  • 举报
回复
public class test <T> { public <T> void Add (T name) 这两句都声明了类型T,你的 public ArrayList<T> list=new ArrayList<>();需要类的T,你方法又声明了一个T,导致类型推断结果不一致。你只要将方法修改为public void add(T name)即可。
  • 打赏
  • 举报
回复
泛型类,是在实例化类的时候指明泛型的具体类型,泛型方法,则是在调用方法的时候指明泛型的具体类型 ,两者的具体类型不一定会一样,所以编译会报错。如果非要定义成泛型方法,可以修改泛型方法的标识,如下

// 把<T>改成E、K、V等,只要不和泛型类冲突即可
public <E> void Add (T name) {
list.add(name);
System.out.println(name);
}
  • 打赏
  • 举报
回复
因为你定义的Add方法是泛型方法,改为普通方法才行,如下

public void Add (T name) {
list.add(name);
System.out.println(name);
}

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧