我想知道,如果Java7的新invokedynamic
字节码指令可以被用来实现多分派 Java语言。 将根据java.lang.invoke新的API有助于进行这样的事情?
我在想这个场景看上去如下。 (这看起来像一个应用案例为客人设计模式,但也有可能的原因,这不是一个可行的选择。)
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);
}
}
库类MultipleDispatch
然后会做那种事情:
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.
}
}
(我知道MultiJava ,但这个在Java的纯粹的方式实现吗?)