我的情况:我编写了一个函数,它将检查每个属性中的任何对象(对于任何深层),如果有特定的注释,如果是,则将该属性设置为null。但是我遇到了一个问题:如何检查属性是否是一个集合,如果有注释,我需要检查集合的每个元素,如果是,我从集合中删除对象set
带有新检查集合的集合。
我的问题:如何使用反射修改此集合内容?
答案 0 :(得分:0)
好的,所以这篇文章对我很有帮助:Get type of a generic parameter in Java with reflection
但我仍有一些问题,所以这里有一段代码来解释:
假设一个具有集合类型属性的简单类:
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
}
}
}
这就是全部!!