gpt4 book ai didi

java - 使用 invokedynamic 实现多重调度

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:54:56 27 4
gpt4 key购买 nike

我想知道是否可以使用 Java7 的新 invokedynamic 字节码指令来实现 multiple dispatch对于 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 的方式实现吗?)

最佳答案

由于我没有使用invokedynamic的经验,我不知道性能和类型安全性有多好,但只能给一些建议:

关于java - 使用 invokedynamic 实现多重调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11014917/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com