当前方法的完全限定方法名称

时间:2013-10-18 08:06:53

标签: java reflection callback

我想得到当前方法的所有注释,因为我需要方法实例,以便我可以get annotation from method

我能够Get Current Method命名,但我需要方法或方法实例的完全限定名称。

我也对其他面向对象的解决方案感兴趣,例如回调。

1 个答案:

答案 0 :(得分:2)

以下代码应该适合您:

    StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();

    // The 2nd element of the array is the current method
    String className = stackTrace[1].getClassName();
    Class clazz = Class.forName(stackTrace[1].getClassName());

    String methodName = stackTrace[1].getClassName()+"."+stackTrace[1].getMethodName();
    String simpleMethodName = stackTrace[1].getMethodName();

    // This will work only when there are no parameters for the method
    Method m = clazz.getDeclaredMethod(simpleMethodName, null);

    // Fetch the annotations 
    Annotation[] annotations = m.getDeclaredAnnotations();