源码
镜像仓库: GitCode:java_new_features
Lambda 类型推断
JDK 10引入了局部变量类型推理( JEP 286 )。这简化了代码,因为你不再需要明确说明局部变量的类型,而是可以使用 var
。 JEP 323 将这种语法的使用扩展到Lambda表达式的参数。这里有一个简单的例子。
package git.snippets.jdk11; import java.util.HashMap; import java.util.Map; /** * lambda类型推断 * * @author <a href="mailto:410486047@qq.com">Grey</a> * @date 2021/11/29 * @since 11 */ public class LambdaInfer { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(2); map.put("hello", 1); map.put("world", 2); map.forEach((var s, var i) -> System.out.println(s + " " + i)); } }
单命令行运行Java
原先需要 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
的版本。
HTTP 客户端
JDK 9 引入了