No way to create a no-op MethodHandle that returns void?
Charles Oliver Nutter
headius at headius.com
Mon Jan 23 23:01:04 PST 2012
I discovered a possible gap in the MethodHandles API.
Say I want to create an exception handler that does nothing but ignore
the exception. The target handle is a method that looks like this:
I have my "target" handle pointing at foo.
I want to catch all Throwable and ignore them, so I would build up a
method handle chain that does the following (top-down)
1. receives arguments (Throwable, String) and returns void
2. drops both arguments
There's no endpoint I can attach it to for a "no-op" void return.
"constant" doesn't work because it returns a value, and explicitly
forbids void return type.
"identity" doesn't work because it returns a value and receives one argument.
What I need here is something like MethodHandles.constant, but that
takes no arguments and has a void return. MethodHandles.nop anyone?
I could filterReturn, but I still would have to attach it to an
external method...there's no way to create a filter that returns void
entirely with method handles.
Am I missing something?
More information about the mlvm-dev