Я хочу установить свойство класса с помощью отражения, а мой класс имеет свойство List<Article>
.Как создать экземпляр java.lang.reflect.Type
Я просто получить тип дженериков в List<Article>
по ниже кода
Method[] methods = target.getClass().getMethods();
String key = k.toString(), methodName = "set" + key;
Method method = getMethod(methods, methodName);
if (Iterable.class.isAssignableFrom(method.getParameterTypes()[0])) {
// at there, i get the generics type of list
// how can i create a instance of this type?
Type type = getGenericsType(method);
}
public static Method getMethod(Method[] methods, String methodName) {
for (Method method : methods) {
if (method.getName().equalsIgnoreCase(methodName))
return method;
}
return null;
}
private static Type getGenericsType(Method method) {
Type[] types = method.getGenericParameterTypes();
for (int i = 0; i < types.length; i++) {
ParameterizedType pt = (ParameterizedType) types[i];
if (pt.getActualTypeArguments().length > 0)
return pt.getActualTypeArguments()[0];
}
return null;
}
Убедитесь, что 'Type' является экземпляром класса (я сомневаюсь, что вы можете создать экземпляр любого другого типа) и использовать методы создания экземпляров из класса. – SJuan76
Можете ли вы добавить код класса, который имеет свойство «List»? Это облегчит тестирование. –
Вы уверены, что это не проблема стирания типа? Также не на 100% ясно, в чем вопрос точно ... –