在整个jvm运行生命中,Method类实例总是唯一的吗? 例如, 我有一个实现InvocationHandler的类。 在方法调用中,它具有Method参数。 我知道我可以处理的所有方法,并且我想使用不同的策略来处理不同的方法。所以我构建了一个像Map这样的战略地图。 代码如:
@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Strategy strategy = strategyMap.get(method);
Method realMethod = strategy.getCorrespondingMethod();
return realMethod.invoke(this, args);
}
问题是,如果我使用此策略,则Method对象必须在整个JVM运行生命周期中是全局唯一的。否则,我找不到正确的策略。
那么,java中Method类的实例是全局唯一的。
问题2: 如何高效的方法:toGenericString(),我使用方法对象无法完成这项工作,我想我可以使用方法泛型字符串。
谢谢。
答案 0 :(得分:3)
您应该以这种方式看到它 - 对于给定的类,方法实例始终是唯一的。我为给定类添加的原因是因为使用不同类加载器加载的2个相同类将具有相同方法的不同实例。
Method的有效性如何:toGenericString()
嗯,效率是一个相对概念。您没有任何可以比较toGenericString()
的内容。因此,如果toGenericString()
完成工作,那就去做吧,忘掉效率:P