java - java中Method类的实例是否是全局唯一的

标签 java reflection dynamic-proxy

在整个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/

相关文章:

c# - 按任何属性对列表进行排序的更好方法

.net - 在 .NET Web 应用程序中使用 CaSTLe DynamicProxy 的性能建议

c# - 创建一个 INotifyPropertyChanged 代理以将调用分派(dispatch)到 UI 线程

java - 如何在反序列化时重新附加单例 Spring bean

java - 由 : java. lang.ClassNotFoundException 引起:日志

java - DynamoDb 查询枚举

java - 创建一个由 int 数组组成的 int 数组,其中包含加起来等于给定数字的所有可能的总和

c# - 测试 Convert.ChangeType 是否可以在两种类型之间工作

c# - 在 iOS 上的 C# IL2CPP 中通过反射调用泛型方法

java - 如何在单击按钮时更改列表项中的 textView