我正在编写一个带有以下签名的Java方法.
void Logger(Method method,Object [] args);
如果方法(例如ABC())调用此方法Logger,它应该检索封装自身数据(ABC())的Method对象并将其作为参数传递.
方法如何检索存储有关该方法的所有信息的Method对象?
一个简单的方法是我使用Method [] methods = ExampleClass.Class.getMethods(); 并使用正确的名称在整个数组中搜索Method.(这是非常低效的).此外,如果两个或多个方法具有相同的名称,那么我将不得不检索它们的参数类型(以区分它们)并为每个方法使用不同的代码.这既低效又痛苦.
有没有更好的办法?
谢谢您的帮助.
不要这样做.而是从堆栈中获取方法名称.
public void log(Object object) {
String methodName = Thread.currentThread().getStackTrace()[2].getMethodName();
// ...
}
Run Code Online (Sandbox Code Playgroud)
然而,这是相当昂贵的,这就是为什么大多数自我尊重的日志框架提供打开/关闭它的选项(我建议使用而不是自己生成一个).
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |