I wondered if Java7's new invokedynamic bytecode instruction could be used to implement multiple dispatch for the Java language. Would the new API under java.lang.invoke be helpful to perform such a thing?
The scenario I was thinking about looked as follows. (This looks like an application case for the visitor design pattern, but there may be reasons that this is not a viable option.)
class A {} 
class A1 extends A {}
class A2 extends A {}
class SomeHandler {
    private void doHandle(A1 a1) { ... }
    private void doHandle(A2 a2) { ... }
    private void doHandle(A a) { ... }
    public void handle(A a) {
        MultipleDispatch.call(this, "doHandle", a);
    }
}
The library class MultipleDispatch would then do something of the kind:
class MultipleDispatch {
    public static Object call(Object receiver, String method, Object...arg) {
        // something like that in byte code
        #invokeDynamic "doHandle" "someBootstrap"
    }
    static CallSite someBootstrap {
        // resolve that dynamic method call.
    }
}
(I am aware of MultiJava, but can this be achieved in a Java-pure fashion?)
 
     
    
