El siguiente código imprime maravillosos "funciona"genéricos en maravilloso
def printIt(Class<? extends Exception> clazz) {
println "it works"
}
printIt(String.class)
aunque el parámetro no satisface la restricción Class<? extends Exception>
Mi opinión es que esto se debe a:
- La supresión de tipo en los genéricos de Java significa que no hay comprobación de tipo genérico en tiempo de ejecución
- No hay comprobación de tipo de tiempo de compilación en Groovy
Estos dos puntos significan que efectivamente no hay verificación de tipos genéricos limitados en Groovy. ¿Hay alguna manera de comprobar (en tiempo de ejecución) que el objeto pasa a Class
printIt
satisface la restricción ? extends Exception
Gracias, Don
Me pregunto qué significa exactamente: 'Groovy actualmente hace un poco más lejos y arroja información genérica "en el nivel de origen"' –
Creo que esto significa que la información genérica simplemente se ignora en groovy. En Java, la información genérica se elimina pero se realizan los moldes apropiados y la verificación de tipo estático. –