Reflection.getCallerClass(n) does not skip reflection calls in constructors

Weijun Wang weijun.wang at oracle.com
Mon Nov 26 05:46:24 UTC 2012


Hi

I'm trying to use Reflection.getCallerClass(n) to find out who is 
calling a method. The method's spec says:

                                      .... Frames associated with
     java.lang.reflect.Method.invoke() and its implementation are
     completely ignored and do not count toward the number of "real"
     frames skipped.

This is very nice but it does not mention Constructor.newInstance(). In 
fact, I do see the following entries if I'm creating an object thru 
reflection:

    Callee
    class sun.reflect.NativeConstructorAccessorImpl
    class sun.reflect.NativeConstructorAccessorImpl
    class sun.reflect.DelegatingConstructorAccessorImpl
    class java.lang.reflect.Constructor
    Caller

Is there any reason why we cannot do the same for constructor instantiation?

Thanks
Max



More information about the core-libs-dev mailing list