Reflection.getCallerClass() and @CallerSensitive for a constructor?

Tom Hawtin tom.hawtin at oracle.com
Mon Mar 24 13:28:35 UTC 2014


On 24/03/2014 08:41, Wang Weijun wrote:
> Calling Reflection.getCallerClass() needs the @CallerSensitive annotation, but it cannot be applied to a constructor.

Ah, I see your message from 2012-11-26 05:46.

 > 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:

And Class.newInstance. Which gives a clue to a problem. Any code that is 
using Constructor.newInstance has to be as careful with it as they are 
with Method.invoke. Slightly more so, as constructors lean on 
overloading rather than having names like all self-respecting methods. 
As we know from experience, existing code does automatically take into 
account bizarre new requirements. I think we have a sufficient quantity 
of caller-sensitive stuff without taking it into new directions.

(From reading the HotSpot sources some time ago (may have changed), in 
particular circumstances some, but not all, constructor reflection 
frames may disappear.)

Tom



More information about the core-libs-dev mailing list