[OK]をので、この記事では私をたくさん助け:Get type of a generic parameter in Java with reflection
しかし、私はまだので、ここで説明するコードの一部をいくつかproblemeを持っていた:
:
は、コレクション型のプロパティを持つ単純なクラスを言ってみましょう今
static class Bla {
public ArrayList<String> collection = new ArrayList<String>();
}
反射でStringクラスを盗んする機能を参照してください。
public static void check(Object object) throws IllegalArgumentException, IllegalAccessException {
Class<?> objectClass = object.getClass();
Field[] fields = objectClass.getFields();
for (Field field : fields) {
Object prop = field.get(object);
if (prop instanceof ArrayList) {
Type genericType = field.getGenericType(); // To get the ArrayList<String> Type object
ParameterizedType pt = (ParameterizedType) genericType; // Cast to a ParameterizedType to
// recover the type within <T> which
// is String
Type[] atp = pt.getActualTypeArguments();// Then call the function to get the array of type
// argument (e.g.: <T>,<V,U>,...)
// Do something with this
}
}
}
それだけです!
コレクションを(リフレクトで)取得し、そのメソッドを使用しますか? – Kayaman
しかし、コレクションの要素の種類を知る方法はありますか? –
いくつかの反射トリッキーでジェネリックタイプを取得できます。https://stackoverflow.com/questions/1901164/get-type-of-a-generic-parameter-in-java-with-reflection – Kayaman