哪些有用的(用于性能或其他方面)构造是有效的字节码,但在Java中无法表达?
答案 0 :(得分:6)
答案 1 :(得分:3)
JVM字节码是stack-oriented programming language,因此大多数堆栈管理指令在Java中没有意义,例如: dup
,swap
等等。当然,任意goto
在Java中也无法表达。
像JSR 292之类的东西建议支持动态类型语言,我认为Java不会计划成为这种语言。
我认为这里需要解决一些问题:你的问题似乎至少部分是由绩效问题推动的。在实践中,字节码被JIT编译为汇编。是否有一个超级神奇的字节码指令实在是没有实际意义。
答案 2 :(得分:2)
我已经读过字节码方法签名支持返回类型上的多个调度,而Java只允许在参数类型上调度相同名称的方法。
答案 3 :(得分:1)
有时候情况恰恰相反。
例如,Java的内部类的可见性不能用字节码表示。 JVM只知道受包受保护,受保护,公共和私有的可见性。因此Java编译器必须使用hack:它生成合成包装器方法(可以看到包),以将内部类的私有字段和方法暴露给外部类。