除了invokedynamic,JDK 7的哪些功能会导致新的类文件版本与JDK 6不兼容?似乎所有功能都可以通过编译器生成粘合代码来实现。例如,switch语句中的字符串可以使用由编译器生成的重复ifeq语句来实现。我想能够给编译器提供“-source 1.7”和“-target 1.6”的标志以符合JRE 6,并同时在JDK 7中使用Project Coin功能。
所以让我确保我理解了这一点。您想针对与所有其他类不同的JRE运行应用程序中的特定类?我认为,如果在您不想使用不同版本的类的每次使用中,都会启动单独的JVM,那么这可能在理论上是可能的。这将涉及等同于在不相交的应用程序之间传递信息的复杂级别。出厂时它不会按此方式工作,因为6中的执行环境不会知道项目硬币功能。如果我没记错,您不能在1.4运行时使用泛型,那么这有什么不同呢?归根结底,它似乎真的不值得,但话说回来,也许我完全错过了您的重点。
javac -source 1.7 -target 1.6 Test.java
输出javac: source release 1.7 requires target release 1.7
。我也很想知道为什么会这样。 - narthi