黑马程序员技术交流社区
标题:
关于集合类的错误,请赐教
[打印本页]
作者:
李洪因
时间:
2013-1-16 20:52
标题:
关于集合类的错误,请赐教
public class Number1 {
public static void main(String[] args) {
Collection<String> con=new HashSet<String>();
con.add("hello");
con.add(new Name("hi","ji"));//add显示错误
con.add(new Name("fi","ki"));//add显示错误
System.out.print(con);
}
}
class Name implements Comparable{
String firshname,lastname;
Name(String firshname,String lastname){
this.firshname=firshname;
this.lastname=lastname;
}
public String getfirshname(){
return firshname;
}
public String getlastname(){
return lastname;
}
public String toString(){
return firshname+" "+lastname;
}
@Override
public int compareTo(Object o) {
Name n=(Name)o;
int lastcom=lastname.compareTo(n.lastname);
return (lastcom !=0 ?lastcom : firshname.compareTo(n.firshname));
}
}
当Collection<String> con=new HashSet<String>();这句中去掉<String>,换成
Collection con=new HashSet();就可以运行啦!请问为什么?
作者:
王少雷
时间:
2013-1-16 21:05
The method add(String) in the type Collection<String> is not applicable for the arguments (Name)
报错是肯定的。
你为什么说String对象能指向Name对象呢?
泛型啊。别瞎搞啊。楼主。。。
作者:
夏振博
时间:
2013-1-16 21:10
Collection
<String>
con=new HashSe
t<String>
();
加了泛型了,说明这个集合只能存String类型
错误时因为你存的是对象
con.add(new Name("hi","ji"));//add显示错误
con.add(new Name("fi","ki"));//add显示错误
作者:
唐晓
时间:
2013-1-16 21:13
Collection<String> con=new HashSet<String>();这语句用到了泛型,泛型是JDK1.5以后出现的机制
泛型的出现提高了程序的安全性,将运行期遇到的问题转移到了编译期,省去了类型强转的麻烦。
这句语句是规范了集合必须添加的是String类型,所以你添加的new Name()不是String类型,在编译的时候程序就会报错
作者:
何竹冬
时间:
2013-1-16 21:21
你好
你集合用到泛型,只能添加String类型,你添加Name对象,它认为不是String所以会报错。
作者:
李洪因
时间:
2013-1-17 12:42
明白啦,谢谢各位!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2