镜像仓库: GitCode:java_new_features
JDK 10引入了局部变量类型推理( JEP 286 )。这简化了代码,因为你不再需要明确说明局部变量的类型,而是可以使用 var 。 JEP 323 将这种语法的使用扩展到Lambda表达式的参数。这里有一个简单的例子。
package git.snippets.jdk11; import java.util.HashMap; import java.util.Map; /** * lambda类型推断 * * @author Grey * @date 2021/11/29 * @since 11 */ public class LambdaInfer { public static void main(String[] args) { Mapmap = new HashMap<>(2); map.put("hello", 1); map.put("world", 2); map.forEach((var s, var i) -> System.out.println(s + " " + i)); } }
原先需要 javac ,然后 java
javac Hello.java && java Hello
现在合成一个 java 命令搞定
java Hello.java
同样的
java -classpath /home/foo/java Hello.java Bonjour
等同于如下两条
javac -classpath /home/foo/java Hello.java java -classpath /home/foo/java Hello Bonjour
该JEP还提供“shebang”支持。为了减少在命令行上提及 Java 启动器的需要,包含在源文件的第一行。例如:
# !/usr/bin/java --source 11
public class HelloWorld {
...
}
注: --source 11 是必要的,指定了 JDK 的版本。
JDK 9 引入了