黑马程序员技术交流社区

标题: 泛型方法问题,具体问题请看代码 [打印本页]

作者: 谢洋    时间: 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
拿出来看就明白了
  1. Collection<Object> c2 = new HashSet<Date>();//错误
  2.                 Collection c = new HashSet<Date>();//正确

  3.                 printCode1(arr);//报错
  4.                 Collection<Object> cols = new ArrayList<Integer>();//报错
  5.                
  6.                 printCode2(arr);
  7.                 Collection cols2 = new ArrayList<Object>();

  8.                 printCode1(arr2);
  9.                 Collection<Object> cols3 = new ArrayList<Object>();
  10.                 printCode2(arr2);
  11.                 Collection cols4 = new ArrayList<Object>();
复制代码

作者: 谢洋    时间: 2013-2-25 16:59
黄玉昆 发表于 2013-2-25 15:47
童鞋,你这么发帖,别人看了都会郁闷的,一堆代码会让看帖的人眼花缭乱的。我建议你还是把问题先说明一下, ...

谢谢你建议




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2