将List作为参数传递给java.lang.reflect.Method

时间:2011-05-26 10:01:43

标签: java generics

我有一个看起来像这样的方法;

public void update(List<Object> obj);

我希望能够使用 java.lang.reflect.Method 来调用该方法。有谁知道怎么做呢?

2 个答案:

答案 0 :(得分:5)

使用Class类获取方法:

Class<?> clazz = theObject.getClass();
Method method = clazz.getMethod("update", List.class);

然后调用方法:

method.invoke(theObject, new ArrayList<Object>());

泛型在运行时被删除。它们是编译时间的东西。因此,您可以使用List.class来引用List<Object>

答案 1 :(得分:1)

是的,你可以做到

myObject.getClass()
    .getMethod("update", List.class)
    .invoke(myObject, myListOfObject);