美文网首页
Java9的一些学习碎片

Java9的一些学习碎片

作者: 会九卦的兔子 | 来源:发表于2018-08-19 22:56 被阅读0次

of() 方法
可以创建的类有 Set、 List、Map

  List list = List.of();
  Set s = Set.of();
  Map m = Map.of();

也可以创建有值的集合

  List list = List.of("value1","value2","value3");
  Set s = Set.of("value1","value2","value3");
  Map m = Map.of((1, "value1", 2, "value2", 3, "value3");

接口中引入私有方法

public interface TestInterface{
  private static void displayCardDetails(){
    // Method implementation goes here.
  }
}

对Java7 提出的Try-With-Resources 用法进行了优化
下面是Java7的实现方式

void testARM_Before_Java9() throws IOException{
 BufferedReader reader1 = new BufferedReader(new FileReader("journaldev.txt"));
 try (BufferedReader reader2 = reader1) {
   System.out.println(reader2.readLine());
 }
}

这是Java9的实现方式:

void testARM_Before_Java9() throws IOException{
 BufferedReader reader1 = new BufferedReader(new FileReader("journaldev.txt"));
 try (reader1) {
   System.out.println(reader1.readLine());
 }
}

文档的是如果我们有一个已经在Try-With-Resource语句外面声明为final或有效final的资源,那么我们就不需要声明一个局部变量。我们可以在Try-With-Resource语句中使用以前创建的变量,没有任何问题。

进行延时和超时操作,实用方法和更好的子类化的API

  Executor exe = CompletableFuture.delayedExecutor(50L, TimeUnit.SECONDS);

引入了一个新的 Reactive Streams API。
Java SE 9 Reactive Streams API 是一个发布订阅型框架,使我们能够非常简单地使用 Java 语言就能实现异步的、可拓展的和并行的应用。

**引入一个新的 Мulti-Resolution Image API。这个 API 中比较重要的接口是 MultiResolutionImage,在 java.awt.image 包下可获取到。用于封装不同高度和宽度图片(不同解决方案)到一个集合中,并允许我们按需查询使用。

引入新的 HTTP 2 Client API。它将同时支持 HTTP/1.1 和 HTTP/2 协议,也同时支持同步(Blocking Mode)和异步模式,支持 WebSocket API 使用中的异步模式。**

Java8中的Stream:

jshell> import java.util.stream.*

jshell> Stream stream = Stream.of(1,2,3,4,5,6,7,8,9,10)
stream ==> java.util.stream.ReferencePipeline$Head@64bfbc86

jshell> stream.forEach(x -> System.out.println(x));
1
2
3
4
5
6
7
8
9
10

Java 9对Stream API进行了改进,向Java.util添加了四个有用的新方法:
dropWhile
takeWhile
iterate
ofNullable
由于流是一个接口,所以前两个新方法是默认方法,最后两个是静态方法。其中两个是非常重要的:dropWhile和takeWhile 方法。

在Stream API中,while()方法返回与谓词条件相匹配的最长前缀元素。
它以Predicate作为参数。Predicate是布尔表达式,它返回true或false。对于有序和无序的流,它的行为是不同的。让我们用下面一些简单的例子来探索它们。

default Stream<T> takeWhile(Predicate<? super T> predicate)

如果流是一个有序的,那么当takeWhile方法返回与该Predicate匹配的最长前缀时。结果流只包含与Predicate条件相匹配的前缀元素。


jshell> Stream<Integer> stream = Stream.of(1,2,3,4,5,6,7,8,9,10)
stream ==> java.util.stream.ReferencePipeline$Head@55d56113

jshell> stream.takeWhile(x -> x < 4).forEach(a -> System.out.println(a))
1
2
3

由于这条流是有序的,所以takeWhile方法返回与Predicate相匹配的前三个元素。这里的Predicate是“元素必须小于4”。

无序的

jshell> Stream<Integer> stream = Stream.of(1,2,4,5,3,6,7,8,9,10)
stream ==> java.util.stream.ReferencePipeline$Head@55d56113

jshell> stream.takeWhile(x -> x < 4).forEach(a -> System.out.println(a))
1
2

由于这条流是无序的,所以takeWhile方法返回前两个与Predicate相匹配的元素。

在Stream API中,dropWhile()方法会删除与Predicate相匹配的最长前缀元素,并返回其余的元素。


jshell> Stream<Integer> stream = Stream.of(1,2,3,4,5,6,7,8,9,10)
stream ==> java.util.stream.ReferencePipeline$Head@55d56113

jshell> stream.dropWhile(x -> x < 4).forEach(a -> System.out.println(a))
4
5
6
7
8
9
10

由于这条流是有序的,dropWhile()方法首先删除与Predicate相匹配的三个要素,并将剩余的元素返回到结果流中。这里我们的谓词是"元素必须小于4

Diamond 操作器和匿名内部类的改进

public List getEmployee(String empid){
    // Code to get Employee details from Data Store
    return new List(emp){ };
}

这里我们可以只使用“List”,而不指定类型参数。

删除了一些工具和组件
移除 rt.jar 和 tools.jar
移除JavaDB
删除了JVM TI 工具代理
删除jhat(Java Heap Analysis Tool)工具
删除 java-rmi.exe和java-rmi.cgi发射器
移除了Java VisualVM
从JMX RMIConnector中移除对IIOP传输的支持
删除native2ascii工具

更详细的内容可以去这里看下:https://www.journaldev.com/java

相关文章

  • Java9的一些学习碎片

    of() 方法可以创建的类有 Set、 List、Map 也可以创建有值的集合 接口中引入私有方法 对Java7 ...

  • 一、java前期准备:(2)java、eclipse并写两个小程

    1、下载java8 目前最新的java9,增加了一些新的特性,在官网的首页上当然也是java9,如果想下载jdk ...

  • 碎片化学习碎碎念1

    20210407 碎片化学习,指的是碎片化的时间、碎片化的知识、碎片化的体验。 去年疫情宅家里,我报了好一些线上的...

  • Java9新特性简介

    Java9 Java9正式发布于2017年9月21日,Java9 带来了很多重大的变化,其中最重要的改动是Java...

  • Java9初探(二)

    再谈Java9模块化 在之前已经提到了作为java9最重要的特性就是模块化。有了模块化java9变得更轻量级。在编...

  • JAVA9模块化详解(一)——模块化的定义

    JAVA9模块化详解(一)——模块化的定义 前言 java9已经出来有一段时间了,今天向大家介绍一下java9的一...

  • 【20200320日更】碎片

    #洋葱阅读#第二关 碎片阅读 学完这节课我的三个收获: 碎片阅读的本质是概念学习,利用碎片时间,对一些概念进行学习...

  • 碎片化时代你的学习方式对不对?

    笔者身边很多利用碎片化时间学习的人。经常向我推荐一些内容。其实我也是很赞成碎片化学习的。然而一直有一些困惑,不知道...

  • 猫叔:学习基础课后的碎碎念

    001不是碎片化学习的错,是因为你不懂得碎片化学习。 时间碎片化是必然,碎片化学习也是必然的,之所以碎片化学习被人...

  • java9 学习笔记

    1.provides 含义 // Implements service with instanceprovides...

网友评论

      本文标题:Java9的一些学习碎片

      本文链接:https://www.haomeiwen.com/subject/hkehiftx.html