Replacement of sun.reflect.Reflection#getCallerClass
Jochen Theodorou
blackdrag at gmx.org
Tue Sep 3 17:40:13 UTC 2013
Am 03.09.2013 19:16, schrieb Peter Levart:
[...]
> What about a simple restriction on methods returning such instances that
> Class objects are only returned when they are resolvable from the
> ClassLoader of client code. If they are not resolvable, null is
> returned. For example, the equivalent of:
>
> public class StackTraceFrame {
>
> private final Class<?> declaringClass;
>
> @CallerSensitive
> public Class<?> getDeclaringClass() {
> try {
> return Class.forName(declaringClass.getName(),
> false,
> Reflection.getCallerClass().getClassLoader())
> == declaringClass ? declaringClass : null;
> }
> } catch (ClassNotFoundException ignore) {}
> return null;
> }
>
> // the name can be exposed without fear...
> public String getDeclaringClassName() {
> return declaringClass.getName();
> }
>
>
> This example could be implemented more efficiently then above code
> (using private Class/ClassLoader API).
for us it is the standard case, that the client code is not able to
resolve the caller class. The code making the call to the method, that
needs the information in the end is usually in a sub loader of the
loader in which the declaring class of the method making use of the
information is. Not always, but usually. Thus this would be useless to us
bye Jochen
--
Jochen "blackdrag" Theodorou - Groovy Project Tech Lead
blog: http://blackdragsview.blogspot.com/
german groovy discussion newsgroup: de.comp.lang.misc
For Groovy programming sources visit http://groovy-lang.org
More information about the core-libs-dev
mailing list