Esto podría ser una pregunta estúpida, pero acabo de ver una pregunta que pregunta how to create a Type variable for a generic type. El consenso parecía ser que debería tener un método ficticio para devolver ese tipo, y luego usar el reflejo para obtenerlo (en este caso, quería Map<String, String>
). Algo como esto:Creando objeto de tipo parametrizado usando la clase anónima
public Map<String, String> dummy() { throw new Error(); }
Type mapStringString = Class.forName("ThisClass").getMethod("dummy").getGenericReturnType();
Mi pregunta es, no tener reflejo utilizado mucho, ¿No podrías hacer algo como:
Type mapStringString = new ParameterizedType() {
public Type getRawType() {
return Map.class;
}
public Type getOwnerType() {
return null;
}
public Type[] getActualTypeArguments() {
return new Type[] { String.class, String.class };
}
};
Que este trabajo? ¿Si no, porque no? Y cuáles son algunos de los peligros/problemas si lo hace (además de ser capaz de volver algún tipo como Integer<String>
que obviamente no es posible.
Estoy tratando de hacer lo que permite su propuesta de solución: obtener un tipo parametrizado de una materia prima Tipo y lista de parámetros de tipo suministrados en tiempo de compilación. ¿Encontraste otra forma de hacer esto? – user48956