Java 8 lambda表达式字节码一致性

Java 8 lambda expression bytecode consistency

我一直在研究由我的 OpenJDK 编译器编译的 Java lambda 表达式字节码,我想知道,lambda 表达式字节码是否会因 compiler/runtime 而异?我想知道我的检查逻辑是否可以跨平台工作。

can lambda expression bytecode vary by compiler/runtime?

理论上是的。 JLS 没有指定必须生成特定的字节码/序列。

您需要检查现有 Java 8 & Java 9 编译器发出的字节码,看看它们有多少不同。 (这并没有告诉您尚未编写的编译器/版本!)

I'd like to know that my inspection logic will work across platforms, or not.

解决方案应该是构建一套全面的测试用例,并 运行 它们针对您要支持的所有 Java 编译器生成的代码。

简而言之:测试它。