1
私は自動化されたswaggerプラグインを構築しています。ここでは、注釈付きクラスを実行します。Groovyのリストの汎用タイプを取得
String、Longなどのデータ型については、simpleNameメソッドを使用するだけで十分です。
しかし、List of Class、Set、Collectionに入るときは、ジェネリック型を知る必要があります。
どうすればいいですか?
仕事の大半を行うコードの例:
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>"]
グルーヴィーはJVM上で実行されているので:https://stackoverflow.com/questions/3403909/get-generic-type-of-class-at-runtime – Opal
この質問はほとんど私の質問に答えるが、新しいインスタンスの実行時間が増えるようだ。私はオブジェクトをチェックしたくありません。 – Dasma
ジェネリックは実行時にすべて消去されます。オブジェクトだけでなくクラスも同様です。 – Opal