Java 什么是静态<;E>;?

Java 什么是静态<;E>;?,java,collections,Java,Collections,我正在阅读java教程集,想知道为什么静态后需要 public static<E> Set<E> removeDups(Collection<E> c) { return new LinkedHashSet(c); } 公共静态设置移除(集合c){ 返回新的LinkedHashSet(c); } 谢谢, Sarah该是一种声明这是一种泛型方法的方式,这是Java 5.0中泛型引入的特性 有关其用法和基本原理的更多详细信息,请参阅。为便于阅读,静态参数名和通用参数名

我正在阅读java教程集,想知道为什么静态后需要

public static<E> Set<E> removeDups(Collection<E> c) { return new LinkedHashSet(c); } 公共静态设置移除(集合c){ 返回新的LinkedHashSet(c); } 谢谢, Sarah

是一种声明这是一种泛型方法的方式,这是Java 5.0中泛型引入的特性


有关其用法和基本原理的更多详细信息,请参阅。

为便于阅读,静态参数名和通用参数名之间通常有一个空格
static
将方法声明为static,即不需要任何实例来调用它。
声明有一个名为E的无界泛型参数,用于参数化方法的参数和/或返回值。在这里,它在返回类型
Set
中用于声明方法返回一组E,在参数
Collection
中用于指示方法获取一组E

没有指定E的类型,只是返回值和方法参数必须使用相同的类型进行常规参数化。编译器在调用方法时确定实际类型。比如说,

   Collection<String> myStrings = new ArrayList<String>();
   .. add strings
   Set<String> uniqueStrings = SomeClass.removeDups(myStrings);
Collection myStrings=new ArrayList();
.. 添加字符串
设置uniqueStrings=SomeClass.removeDups(myStrings);
如果尝试对这两个集合使用不同的参数化类型,例如

   Set<Integer> uniqueStrings = SomeClass.removeDups(myStrings);
Set uniqueStrings=SomeClass.removeDups(myStrings);

这将生成一个编译器错误,因为泛型参数不匹配。

当您将集合声明为
集合时,您的方法将更加灵活