我想知道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编程语言中,以下两个循环是否等效于任何表达式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)