Hor*_*sey 1 java type-inference java-10
Java 10引入了本地类型推理,这非常酷:
var list = new ArrayList<String>(); // Compiles fine
Run Code Online (Sandbox Code Playgroud)
但是,似乎人们不愿意在新版本发布的那一天(周,月,年)更新他们的Java版本.
这意味着我需要等到Java 8的EOL才可以使用,List.of(1, 2, 3)如果想要支持使用旧Java版本的大多数用户.
另一方面,当编译为字节码时,可能会推断出本地类型推断,因此可能使用它的程序可能会在较旧的Java版本(9或8)上运行.另一方面,Java似乎喜欢在运行时进行优化,这可能意味着类型推断需要JRE版本10.
有人试过这个吗?使用类型推断的程序是否在较旧的Java版本上运行?
感谢您的意见.
类型推断不会改变字节码,因此原则上,使用的编译代码var将与较旧的JVM兼容.
但是,像往常一样,javac不允许您将-source选项与更高版本的-target选项相结合.
因此,var在源代码中使用旧版本运行的唯一方法是为Java 10编译它,然后将编译的类向下移植到早期版本.最简单的方法就是改变类文件版本.我刚刚验证了var在减少类版本号后使用Java 9 的简单测试用例.但是,当然,更复杂的下行工具应该验证没有其他代码功能或新平台功能的API引用.
也许,会出现另一种编译器,允许灵活地使用具有较旧目标版本的较新源版本.正如开头所说,javac从未这样做过.
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |