由浅到深认识Java语言(65):JDK11新特性(其他特性)

该文章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 压缩方案已弃用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值