Hi Peter, > On 25 feb 2015, at 15:48, Peter Levart <[email protected]> wrote: > > > On 02/25/2015 03:26 PM, Peter Levart wrote: >> Ah, never mind. I missed the explicit access check that getEnclosingMethod() >> already performs on it's own before calling getDeclaredMethods(). But the >> check is for the same permission and could be performed implicitly by >> getDeclaredMethods() if the caller of getEnclosingMethod() was passed to it. >> Just an optimization opportunity therefore. >> >> Peter > > Or, even a better optimization: > > - leave explicit check in getEnclosingMethod() as is > - call privateGetDeclaredMethods(false) instead to iterate through methods > - return a defensive copy of just the matching Method if found
I did consider variations of this, but there is always a risk that someone someday forgets to copy methods, or uses a potential innerGetDeclaredMethods without making the proper checking beforehand. So I went for the IMO more maintainable solution. I suppose if this turns out to be a drag on performance we might be able to skip the doPrivileged if there is no SecurityManager set. cheers /Joel
