该文章Github地址:https://github.com/AntonyCheng/java-notes【有条件的情况下推荐直接访问GitHub以获取最新的代码更新】
在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template【有条件的情况下推荐直接访问GitHub以获取最新的代码更新】& CSDN文章地址:https://blog.csdn.net/AntonyCheng/article/details/136555245),该模板集成了最常见的开发组件,同时基于修改配置文件实现组件的装载,除了这些,模板中还有非常丰富的整合示例,同时单体架构也非常适合SpringBoot框架入门,如果觉得有意义或者有帮助,欢迎Star & Issues & PR!
上一章:由浅到深认识Java语言(64):JDK11新特性(增强Optional类&增强Predicate接口)
56.JDK11新特性
Java 11 是继 Java 8 之后的第一个 LTS 长期支持功能版本。它遵循 Java 发布节奏推出 Java 10,并于 2018 年 9 月发布,距 Java 10 发布仅六个月。
Java 9 和 Java 10 是非 LTS 版本。Java 11 版本是 LTS 版本。
Lambda中使用var关键字
Java 11 允许在 lambda 表达式中使用 var,它可用于将修饰符应用于局部变量。
Lambda中使用var关键字的示例:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@interface NonNull {}
public class APITester {
public static void main(String[] args) {
List<String> tutorialsList = Arrays.asList("Java", "HTML");
String tutorials = tutorialsList.stream()
.map((@NonNull var tutorial) -> tutorial.toUpperCase())
.collect(Collectors.joining(", "));
System.out.println(tutorials);
}
}
运行结果如下:
Java
HTML
Lambda中使用var的限制:
1、var 参数不能与其他参数混合使用。以下将抛出编译错误:
(var v1, v2) -> v1 + v2
2、var 参数不能与其他类型参数混合使用。以下将抛出编译错误:
(var v1, String v2) -> v1 + v2
3、var 参数只能与括号一起使用。以下将抛出编译错误:
var v1 -> v1.toLowerCase()
嵌套类的使用
Java 11 引入了嵌套类的概念,可以在类中声明一个类。这种类的嵌套允许在一个地方对要使用的类进行逻辑分组,使它们更具可读性和可维护性。嵌套类可以有四种类型:
- 静态嵌套类
- 非静态嵌套类
- 本地类
- 匿名类
Java 11 还提供了嵌套的概念,以允许嵌套类的通信和验证。
嵌套类的示例:
import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;
public class APITester {
public static void main(String[] args) {
boolean isNestMate = APITester.class.isNestmateOf(APITester.Inner.class);
boolean nestHost = APITester.Inner.class.getNestHost() == APITester.class;
System.out.println(isNestMate);
System.out.println(nestHost);
Set<String> nestedMembers = Arrays.stream(APITester.Inner.class.getNestMembers())
.map(Class::getName)
.collect(Collectors.toSet());
System.out.println(nestedMembers);
}
public class Inner{}
}
运行结果如下:
true
true
[APITester$Inner, APITester]
删除或弃用的API
删除的API
Java EE 和 CORBA:
以下已弃用的 Java EE 和 CORBA 从 Java 11 版本中删除。
- 基于 XML 的 Web 服务的 Java API (java.xml.ws)
- XML 绑定的 Java 体系结构 (java.xml.bind)
- JavaBeans 激活框架 (java.activation)
- 常用注解(java.xml.ws.annotation)
- 通用对象请求代理架构 (java.corba)
- JavaTransaction API (java.transaction)
这些API 可作为第三方站点的独立版本使用。
JMC 和 JavaFX:
- JDK Mission Control (JMC) 从标准 JDK 中删除。它可作为独立下载使用。
- JavaFX 也从标准 JDK 中删除。它可以作为单独的模块下载。
弃用的API
- 不推荐使用 Nashorn JavaScript 引擎和 JJS 工具。
- JAR 文件的 Pack200 压缩方案已弃用。