我需要使用反射来调用以下两个方法:
buildUniqueKeyFromColumnNames(Table table, String keyName, String[] columnNames)
buildUniqueKeyFromColumnNames(Table table, String keyName, String[] columnNames, String[] orderings, boolean unique)
我尝试了以下内容,但没有任何运气:
Method buildUniqueKeyFromColumnNames1 = clazz.getDeclaredMethod("buildUniqueKeyFromColumnNames",
Table.class, String.class, String[].class);
Method buildUniqueKeyFromColumnNames2 = clazz.getDeclaredMethod("buildUniqueKeyFromColumnNames",
Table.class, JPAIndexHolder.class, UniqueConstraintHolder.class, String[].class, String[].class, Boolean.class);
这只会导致NoSuchMethodException。我怀疑它与数组参数有关。
如何使用反射正确地获取和调用这两种方法?
答案 0 :(得分:0)
如何使用反射:
http://java.sun.com/docs/books/tutorial/reflect/member/methodInvocation.html
Class<?> c = Class.forName("class name");
Method method = c.getDeclaredMethod("method name", parameterTypes);
method.invoke(objectToInvokeOn, params);
其中:
答案 1 :(得分:0)
我想在@ Dsenese1的答案中添加一些东西。 如果出现错误,您必须使用try catch块处理错误。 否则你无法建立它
try{
Class<?> c = Class.forName("class name");
Method method = c.getDeclaredMethod("method name", parameterTypes);
method.invoke(objectToInvokeOn, params);
}catch(Exception e){
//Handle error
}