2010-08-13 16 views
5

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

+0

Su método sería más flexible cuando declare la colección como 'Colección '. De esa manera podría pasar colecciones de subclases de E. – whiskeysierra

Respuesta

8

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.

2

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