2012-10-02 20 views
6

Supongamos que tengo dos clases:Javadoc al extender la clase genérica con la clase no genérica

abstract class GenericA<E> { 
    public void go(E e) {...} 
} 

public class IntegerA extends GenericA<Integer> { 
} 

Tenga en cuenta que es GenericA paquete-privada y genérico, y IntegerA es pública y no genérico.

Ahora, cuando genero el Javadoc pública (usando Eclipse), veo el siguiente en la sección IntegerA métodos:

public void go(E e) 

El problema es que un lector de ese Javadoc tiene ni idea de lo E es; es decir, que E representa Integer. Yo preferiría tener el Javadoc decir

public void go(Integer e) 

¿Hay una manera de hacer Javadoc se comportan de la manera que yo quiero que?

+0

¿Qué dice su javadoc que es la superclase? Acabo de probar esto en mi propia máquina y tuvo el mismo problema que tú, pero también dijo erróneamente que la superclase era 'Objeto'. – Dunes

+0

También dice que la súper clase es 'Objeto' para mí. Pero desde que declare 'GenericA' como paquete privado en lugar de público, mi opinión es que ese es el comportamiento correcto. Cuando en lugar de declarar 'GenericA' como público, Javadoc dice que el tipo super de' IntegerA' es 'GenericA ' – Blaine

+1

Ah, entonces veo el problema. No existe un método real con la firma 'go (Integer e)' (como se mostraría mediante la reflexión). Así que javadoc mentiría si especificara la firma del método, aunque el compilador insistirá en ello, no es en el que el tiempo de ejecución insistirá ... complicado ... veo que tienes la respuesta que necesitas aunque. – Dunes

Respuesta

3

La única forma que conozco es reemplazar el método en IntegerA con Entero y luego llamar al método súper.

@Override 
public void go(Integer e) { 
    super.go(e); 
} 
Cuestiones relacionadas