Java9新特性及代码示例

file

你好啊,我是大阳,今天给大家介绍一下Java9的新特性,并提供一些代码示例。

Java 9带来了许多新的增强功能,这些增强功能将在很大程度上影响你的编程风格和习惯。最大的变化是Java的模块化。这是继Java 8中的Lambdas之后的另一个重大变化。在本文中,我将列出Java 9版本的一部分更新内容。

本文主要内容:

  • Java模块化
  • 接口私有方法
  • HTTP/2客户端
  • JShell – REPL 工具
  • 平台和JVM日志记录
  • Process API更新
  • Collection(集合) API更新
  • Stream(流) API改进
  • 多版本Jar文件
  • @Deprecated 注解更改
  • Java 文档更新
  • 其他功能

1. Java 模块化

JPMS(Java Platform Module System)是Java 9发行版的核心亮点。它也被称为Jigshaw项目。模块是新的结构,就像我们已经有包一样。使用新的模块化编程开发的应用程序可以看作是交互模块的集合,这些模块之间具有明确定义的边界和依赖关系。

JPMS包括为编写模块化应用程序提供支持,以及将JDK源代码模块化。JDK 9 附带了大约 92 个模块(在 GA 版本中可以进行更改)。Java 9 Module System有一个"java.base"模块。它被称为基本模块。它是一个独立的模块,不依赖于任何其他模块。默认情况下,所有其他模块都依赖于"java.base"。

在java模块化编程中:

  • 一个模块通常只是一个 jar 文件,在根目录下有一个文件module-info.class
  • 要使用模块,请将 jar 文件包含到modulepath而不是classpath. 添加到类路径的模块化 jar 文件是普通的 jar 文件,module-info.class文件将被忽略。

典型的module-info.java类如下所示:

module helloworld {
    exports cn.dayangshuo.demo;
}

module test {
    requires helloworld;
}

2. 接口私有方法

Java 8 允许在接口中编写默认方法,这是一个广受欢迎的功能。从 Java 9 开始,您可以在接口中包含私有方法。

这些私有方法将提高接口内部的代码可重用性。例如,如果两个默认方法需要共享代码,私有接口方法将允许它们这样做,但不会将该私有方法暴露给它的实现类。

在接口中使用私有方法有四个规则:

  • 私有接口方法不能是抽象的。
  • 私有方法只能在接口内部使用。
  • 私有静态方法可以在其他静态和非静态接口方法中使用。
  • 私有非静态方法不能在私有静态方法中使用。

示例:

public interface CustomCalculator {
    default int addEvenNumbers(int... nums) {
        return add(n -> n % 2 == 0, nums);
    }

    default int addOddNumbers(int... nums) {
        return add(n -> n % 2 != 0, nums);
    }

    private int add(IntPredicate predicate, int... nums) { 
        return IntStream.of(nums)
                .filter(pr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值