JDK 7类文件向后兼容JDK 6

Den*_*niz 28 java java-7

JDK 7的哪些功能(不包括invokedynamic,因为它不被java使用)导致新的类文件版本不符合JDK 6.它表明所有功能都可以由生成粘合代码的编译器实现.例如,switch语句中的String可以使用编译器生成的重复ifeq语句来实现.我希望能够为编译器提供-source 1.7 -target 1.6标志以符合jre 6,同时在jdk 7中使用项目硬币功能.

Cra*_*lin 8

我还没有读过编译器的代码,但是一些新功能显然必须对字节码产生影响.

"简化的varargs方法调用"实际上只是一个警告抑制,但它必须在字节码中留下一些标记,以便客户端代码可以以不同方式显示警告.

"Try-with-resources"生成的代码可以处理正常异常以及在finally块期间抛出的第二个异常.使用新的addSuppressed()方法存储额外的异常.这不是一个类文件格式更改,但它显然不适用于早期的VM.

"Multi-catch"还产生的字节码与以前的编译器产生的字节码略有不同.现在,异常表中的多个条目将指向相同的catch主体.