Je construis un plugin swagger automatisé. Ici, je cours à travers des classes annotées.Obtenez le type générique d'une liste dans Groovy
Lorsque nous parlons des types de données de String, Long, etc. est suffisant pour moi utiliser la méthode simpleName.
Mais quand j'arrive à une classe de liste, définir, collection j'ai besoin de connaître le type générique.
Alors, comment puis-je faire cela?
Un exemple de code qui fait la plupart du travail:
class Foo {
List<String> myString
}
class SomeUtilClass {
static String dataType(Class<?> c) {
return c.simpleName
}
static List<String> dataTypes(Class<?> c) {
return c.metaClass.properties.findAll {MetaProperty metaProperty ->
metaProperty?.field != null
}.collect {dataType(it.type)}
}
}
SomeUtilClass.dataTypes(Foo) // ["List"] but I want something like ["List<String>"]
Depuis groovy est exécuté sur la JVM: https://stackoverflow.com/questions/3403909/get-generic-type-of-class-at-runtime – Opal
cette question presque répondre à ma question, mais semble être plus l'exécution de nouvelles instances. Je ne veux pas vérifier l'objet. – Dasma
Les génériques sont effacés lors de l'exécution. Pas seulement sur les objets mais aussi sur les classes. – Opal