这是我参与11月更文挑战的第26天,活动详情查看:2021最后一次更文挑战
今天继续~
java9 新特性
模块系统
- 一个包的容器,是java9最大的变化之一
- 模块的代码被组织成多个包,每个包中包含Java类和接口
- 模块的数据为一些资源文件和其他的静态信息
REPL(JShell)
- 此英文的意思为交互式编程环境
- 它允许你无需使用类或者方法包装来执行Java,可直接输入表达式并查看执行结果
- 类似PythonIDE
改进的Javadoc
- java9的Javadoc命令中的
-html5
参数可以让生成的文档支持HTML5
多版本兼容jar包
- 多版本兼容可以实现在使用不同版本的Java时会动态的使用不同版本的class
集合工厂方法
- Java9的List,Set和Map接口中,新的静态工厂方法可以创建这些集合的不可变实例
新的方法创建集合
1 | java复制代码static <E> List<E> of(E e1,E e2,E e3); |
私有接口方法
- 在Java9中,一个接口能定义如下几种变量/方法:
- 常量
- 抽象方法
- 默认方法
- 静态方法
- 私有方法
- 私有静态方法
- 接口中存在的私有方法就可以不用非要被实例化出来
改进的进程API
- Java9向Process API添加了一个名为ProcessHandle的接口来增强Java.lang.Process类
- ProcessHandle接口的实例标识一个本地进程,它允许查询进程状态并管理进程
改进的Stream API
- Java9新添加了一些遍历的方法,使流处理更容易,并使用收集器编写复杂的查询
takeWhile方法
- 使用一个断言作为参数,如果流的执行中与断言相符合的话返回断言前的东西,否则返回一个空的Stream
1 | java复制代码default Stream<T> takeWhile(Predicate<? super T>predicate) |
1 | java复制代码import java.util.stream.Stream; |
- 输出123
ps:流执行1~5,4为空,isEmpty()
判断是否为空,加上!
取反,所有不为空的放过,为空的拦下
dropWhile方法
- 与
takeWhile
作用相反,碰到空的字符串时开始进行输出
1 | java复制代码default Stream<T> dropWhile(Predicate<? super T>predicate) |
- 比如上面的例子如果改成
dropWhile
就只会输出5
iterate方法
- 可与for循环进行相对应的理解
1 | java复制代码static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next) |
1 | java复制代码java.util.stream.IntStream; |
ps:代码输出3,6,9
ofNullable方法
- 可以防止元素为null的异常,如果不是null正常返回,如果是null返回空
1 | java复制代码static <T> Stream<T> ofNullable(T t) |
今天就学到这里,明天继续Java9的新特性,晚安~
本文转载自: 掘金