2011-06-09 6 views
10

Algo como esto es lo que estoy tratando de lograr:genéricos de Java - conseguir un método para devolver el mismo tipo que el primer parámetro

public Attribute<?> getAttribute(Class<? extends Attribute> attributeClass){ 
    for(Attribute attribute: attributes) 
    if(attributeClass.isInstance(attribute)) return attributeClass.cast(attribute); 
    return null; 
} 

donde el atributo <> es, obviamente, la parte incorrecta?.

Quiero que el tipo de devolución de este método sea de attributeClass, pero no puedo encontrar la manera de conseguirlo. Debo señalar que soy consciente de que solo podía usar atributo como un tipo de retorno, pero este método sería llamado sobre todo de esta manera:

... y yo estoy tratando de evitar tener que emitir cada vez .

Ayuda apreciada.

+0

Sería de gran ayuda un poco para filtrar la respuesta correcta si supiéramos cómo se ve 'Attribute'. ¿Es 'interfaz Attribute >', o algo como esto? –

Respuesta

12

esto es lo que necesita

public <T extends Attribute> T getAttribute(Class<T> attributeClass){ 

es necesario que especifique el tipo genérico antes de que el tipo de retorno

+0

Gracias, perfecto – Numeron

4
public <T extends Attribute> T getAttribute(Class<T> attributeClass) { 

debería funcionar

Cuestiones relacionadas