La idea es definir una clase base que pueda invocar métodos definidos en clases derivadas, pero en el momento de la creación quiero asegurarme de que dichos métodos se definan exactamente de acuerdo con los requisitos, que los métodos toman solo un argumento, una HashMap <String String
>.Java: ¿Cómo verificar las definiciones genéricas del tipo de clase?
Hasta ahora pude con el siguiente código comprobar que el método contiene solo un parámetro y que es de Clase HashMap, pero ¿cómo puedo verificar que la definición genérica sea <String, String
>?
public boolean isMethodParameterValid(final Method method) {
final Class<?>[] parameters = method.getParameterTypes();
return ((parameters.length == 1) && parameters[0].isAssignableFrom(HashMap.class));
}
No se borran todos los tipos. Otro ejemplo sería 'new ArrayList {}'. También vale la pena leer la publicación de tokens de Super Type de Neal Gafter: http://gafter.blogspot.com/2006/12/super-type-tokens.html –
johnstok
No, el token de super tipo de Neals Gafter se borra en el momento de la compilación. Su truco ayuda a acceder al Tipo utilizado para instanciar el genérico, en tiempo de ejecución (ya que Type.getClass() está autorizado). – JVerstry