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