On 11/13/2015 06:07 PM, Brian Goetz wrote:
I considered Optional<Class<?>>. I believe it is rare to have a JNI
attached thread calling StackWalker::getCallerClass from native. Most
common cases will find a caller class. Returning an Optional will
force most common uses to handle the case if it’s absent. It’s a
tradeoff that I think it’s better to return Thread.class for the JNI
attached thread calling getCallerClass in native which would rarely
happen.
+1 on returning Thread.class in these cases. Its a pragmatic compromise.
If you must return something non-null, maybe it'd be better to define a
class just for that purpose, e.g.:
public final class StackWalker {
...
public static final class NoCaller {
private NoCaller() {}
}
}
...and use NoCaller.class as your caller when there is none. Bonus
points if you can attach a protection domain with no permissions to that
class.
--
- DML