public HashSet(Collection<? extends E> c) public ClassA<E> 这种Java类定义我看过,是模板
 public HashSet(Collection<? extends E> c) 中的就不清楚了,怎么里面还有问号的?
有这种定义?

解决方案 »

  1.   

    是泛形,在java1.5以后采用泛形是对类型的一个准确表示,省去了很多不必要的转换, public HashSet(Collection<? extends E> c) 就是里面的参数可以是实现了Collection接口的任何实现类的对象或者引用,建议lz看看这篇文章,你就会明白了http://blog.csdn.net/icecloud/archive/2004/03/01/7801.aspx
      

  2.   

    嗯,我也在我的blog里面写了点这个玩意,有兴趣可以去看看
      

  3.   

    这是JDK1.5的新特性:泛形
    首先这个HashSet的构造方法接收一个实现Collection接口的所有子类。我们看例子:
    List<JPanel> list=new ArrayList<JPanel>();
    list.add(new BallPanel());
    HashSet<JPanel> set=new HashSet<JPanel>(list);
    List接口继函自Collection,那个JPanel就相当于E,而BallPanel(继函自JPanel)就相当于那个?
    只要这个?是E的子类就可以放进Set中。