假设我有以下代码:
make_kn_weighted(4,2,7,G), mst_prim(G,T,C).
G = graph([1, 2, 3, 4], [edge(1, 2, 3), edge(1, 3, 6), edge(1, 4, 6), edge(2, 3, 5), edge(2, 4, 2), edge(3, 4, 2)]),
T = graph([1, 2, 3, 4], [edge(1, 2, 3), edge(2, 4, 2), edge(3, 4, 2)]),
C = 7 ;
我想用反射方法“myMethod”替换getPort方法。如何在另一个方法之后调用反射方法? (在这种情况下为entries.get(index))
这可能是一个非常简单的问题,但我到处搜索并没有找到答案。
答案 0 :(得分:2)
Reflection提供了一种在类上调用方法的方法。通常,只有在无法在非反射代码中将类的实例强制转换为所需类型时才需要这样做。使用java.lang.reflect.Method.invoke()调用方法。第一个参数是要在其上调用此特定方法的对象实例。 (如果方法是静态的,则第一个参数应为null。)后续参数是方法的参数。如果底层方法抛出异常,它将被java.lang.reflect.InvocationTargetException包装。可以使用异常链接机制的InvocationTargetException.getCause()方法来检索方法的原始异常。
在你的情况下:
myMethod.invoke(entries.get(index), null);