KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
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?)
Tags (comma-separated)
Save Edits
Cancel