在较低的层次上,java 8对新的运算符" - >"进行了哪些更改,尽管我理解在正常的编程实践中我们不能像C++一样重载任何现有的运算符.
当您认为"JVM理解"Java语言的运算符时,您完全走错了路.这些运算符纯粹是源代码工件,由编译器转换为Java字节代码.例如,在Java源代码中,您可以使用运算符+来连接String自第一个版本以来,但Java字节代码从未直接支持它(直到Java 9).
另一方面,在过去,所有主要的Java语言版本都与JVM的更新配对,因此从来没有要求旧的JVM使用更新的字节代码.虽然Java 8的lambda表达式使用了JVM第7版中已经引入的功能,但Java 8的发布附带了更新的JVM,这是s 中非abstract方法等功能所必需interface的,因此如果lambda表达式需要新的字节代码功能,这也没问题.
也就是说,编译器必须理解的语法而不是JVM,已经改为添加lambda表达式和方法引用.因此,您需要一个最新的编译器来使用它们.Java源代码中没有DSL支持.最接近的是使用基于注释的元编程,但这远远不能为语言添加新的运算符.
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |