Estoy leyendo el tutorial de Java de la colección y me pregunto por qué es necesario <E>
después de estática?¿Qué es estático <E>?
public static<E> Set<E> removeDups(Collection<E> c) { return new LinkedHashSet(c); }
Gracias, Sarah
Estoy leyendo el tutorial de Java de la colección y me pregunto por qué es necesario <E>
después de estática?¿Qué es estático <E>?
public static<E> Set<E> removeDups(Collection<E> c) { return new LinkedHashSet(c); }
Gracias, Sarah
Para la legibilidad, generalmente hay un espacio entre el nombre del parámetro genérico y el estático. static
declara el método como estático, es decir, no se necesita ninguna instancia para llamarlo. El <E>
declara que hay un parámetro genérico ilimitado llamado E que se usa para parametrizar los argumentos del método y/o el valor de retorno. Aquí, se utiliza tanto en el tipo de retorno, Set<E>
a declarar el método devuelve un conjunto de E y en el parámetro, Collection<E>
que indica que el método tiene una colección de E.
El tipo de E no se especifica, sólo se que el valor de retorno y el parámetro del método deben ser genéricamente parametrizados con el mismo tipo. El compilador determina el tipo real cuando se llama al método. Por ejemplo,
Collection<String> myStrings = new ArrayList<String>();
.. add strings
Set<String> uniqueStrings = SomeClass.removeDups(myStrings);
Si intenta utilizar diferentes tipos parametrizados para las dos colecciones, tales como
Set<Integer> uniqueStrings = SomeClass.removeDups(myStrings);
esto generará un error de compilación, ya que los parámetros genéricos no coinciden.
El <E>
es la forma de declarar que éste es un genérico Métodouna característica introducida con los genéricos en Java 5.0
Ver here para más detalles acerca de su uso y razonamiento
Su método sería más flexible cuando declare la colección como 'Colección extends E>'. De esa manera podría pasar colecciones de subclases de E. – whiskeysierra