在整个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);
}
问题是,如果我使用这种策略,则在整个JVM运行寿命中,Method对象必须是全局唯一的。否则,我找不到正确的策略。
因此,Java中Method类的实例是全局唯一的。
问题2:
如何提高Method:toGenericString()的效率,我使用方法对象无法完成此工作,我认为我可以使用方法泛型字符串。
谢谢。
最佳答案
您应该以这种方式看到它-对于给定的类,方法实例始终是唯一的。我为给定类添加的原因是,使用不同的类加载器加载的2个相同的类将具有同一方法的不同实例。
Method:toGenericString()的效率如何
好吧,效率是一个相对的概念。您没有可以与toGenericString()
进行比较的东西。因此,如果toGenericString()
做这项工作,那就去做吧,而忘记效率了:P