我正在寻找一种方法来提取 Java 中签名的本质。原因是我想在我的 java.lang.reflect.Proxies 的 Map 中使用签名作为唯一键。
使用此代码:
public interface MyInterface {
public int compute(String s);
}
...
public static void main (String... args) throws Exception {
InvocationHandler handler = ...;
MyInterface i = (MyInterface) Proxy.newProxyInstance(
Beans.class.getClassLoader(),
new Class<?>[] { MyInterface.class },
handler);
Method m1 = MyInterface.class.getMethod("compute", String.class);
Method m2 = i.getClass().getMethod("compute", String.class);
System.out.printf("%b%f", m1.equals(m2));
}
结果显然是错误的。
这段代码不是我将使用的代码,因为我需要在 InvocationHandler 中使用它,但我想知道关于代理实现和接口,获取method.getName()
andmethod.getParameterTypes()
是否就足够了,或者我应该使用method.getTypeParameters()
andmethod.getParameterAnnotations()
吗?
简而言之:如何获得与接口及其 java.lang.reflect.Proxy 实现相同的方法签名?