小编Mat*_*att的帖子

使用invokedynamic实现多个分派

我想知道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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后库类MultipleDispatch会做类似的事情:

class MultipleDispatch {

    public static Object call(Object receiver, String method, Object...arg) {
        // something like that in byte code
        #invokeDynamic "doHandle" "someBootstrap"
    }

    static …
Run Code Online (Sandbox Code Playgroud)

java overloading dynamic multiple-dispatch dispatch

8
推荐指数
1
解决办法
984
查看次数

这两个循环是否总是等价的

在Java编程语言中,以下两个循环是否等效于任何表达式exp和循环体?唯一的条件应该是新引入的变量b不会出现在方法的其他地方(并且不隐藏属性,......)

while(exp) {
    body
}
Run Code Online (Sandbox Code Playgroud)

for(boolean b = exp; b; b = exp) {
    body
}
Run Code Online (Sandbox Code Playgroud)

java loops

3
推荐指数
1
解决办法
131
查看次数

标签 统计

java ×2

dispatch ×1

dynamic ×1

loops ×1

multiple-dispatch ×1

overloading ×1