黑马程序员技术交流社区
标题:
泛型方法问题,具体问题请看代码
[打印本页]
作者:
谢洋
时间:
2013-2-25 15:33
标题:
泛型方法问题,具体问题请看代码
package test1;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
//泛型应用
public class GenericTest {
public static void main(String[] args) {
Date date = new Date();
Collection<Integer> arr = new ArrayList<Integer>();
Collection<Object> arr2 = new ArrayList<Object>();
arr.add(3);
arr.add(4);
arr2.add(new Object());
arr2.add(new Object());
//printCode1(arr);
printCode2(arr);
printCode1(arr2);
printCode2(arr2);
}
public static void printCode1(Collection<Object> cols){
for(Object obj: cols){
System.out.println(obj);
}
//cols.add(“string”);//没错
//cols = new HashSet<Date>();//报错
cols = new HashSet<Object>();//没错,这还可以理解
}
public static void printCode2(Collection<?> cols){
for(Object obj: cols){
System.out.println(obj);
}
//cols.add(“string”);//报错,因为它不知自己示来匹配就一定是String
cols.size();//没错,此方法与类型参数没有关系。
//下面为什么可以?是相当于Collection<?> cols = new HashSet<Date>();?
//为什么不是相当于上面传入来的实参:
//Collection<Integer> arr = new HashSet<Date>();?或 Collection<Object> arr2 = new HashSet<Date>();?
cols = new HashSet<Date>();
}
}
作者:
黄玉昆
时间:
2013-2-25 15:47
童鞋,你这么发帖,别人看了都会郁闷的,一堆代码会让看帖的人眼花缭乱的。我建议你还是把问题先说明一下,然后再写代码,并把主要的注释也写出来,就很容易让别人看的容易些了。
作者:
夏振博
时间:
2013-2-25 16:07
拿出来看就明白了
Collection<Object> c2 = new HashSet<Date>();//错误
Collection c = new HashSet<Date>();//正确
printCode1(arr);//报错
Collection<Object> cols = new ArrayList<Integer>();//报错
printCode2(arr);
Collection cols2 = new ArrayList<Object>();
printCode1(arr2);
Collection<Object> cols3 = new ArrayList<Object>();
printCode2(arr2);
Collection cols4 = new ArrayList<Object>();
复制代码
作者:
谢洋
时间:
2013-2-25 16:59
黄玉昆 发表于 2013-2-25 15:47
童鞋,你这么发帖,别人看了都会郁闷的,一堆代码会让看帖的人眼花缭乱的。我建议你还是把问题先说明一下, ...
谢谢你建议
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2