在整个jvm运行生命周期中,Method类实例总是唯一的吗? 例如, 我有一个实现 IncationHandler 的类。 在方法调用中,它有一个 Method 参数。 我知道我可以处理的所有方法,并且我想使用不同的策略来处理不同的方法。所以我建立了一个像Map这样的策略 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: Method:toGenericString()的效率怎么样,我使用方法对象无法完成这个工作,我想我可以使用方法泛型字符串。
谢谢。
最佳答案
您应该这样看待它 - 对于给定的类,方法实例始终是唯一的。我为给定类添加的原因是因为使用不同类加载器加载的 2 个相同类将具有相同方法的不同实例。
How about the efficient of Method:toGenericString()
嗯,效率是一个相对概念。您没有任何可以与 toGenericString()
进行比较的内容。因此,如果 toGenericString()
能完成这项工作,那就去做吧,忘记效率:P
关于java - java中Method类的实例是否是全局唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29554282/