示例带你提前了解 Java 9 中的新特性

Java 作为 Android 的基础编程语言,每一次迭代也是备受安卓开发人员的关注。这不,Oracle 公司在今年即将发布 Java 9 正式版,一些新的特性和改进很是值得期待。

周末时间,拜读了国外的一个 Java 大牛写的有关 Java SE 9 的新功能介绍,简明扼要,示例得当。于是,一时兴起,以拙劣的英语水平磕磕绊绊翻译至此,供大家了解一番。

Oracle 公司即将在 2017 年 3 月底正式发布 Java SE 9。在这篇文章,我将使用一些示例简明扼要地阐述 Java 9 的新特性。当然,也是时候去了解一下。

1. Java 9 PEPK(JShell)

Oracle 公司(Java Library 开发者)新引进一个代表 Java Shell 的称之为 “jshell” 或者 REPL(Read Evaluate Print Loop)的新工具。该工具可以被用来执行和测试任何 Java 中的结构,如 class,interface,enum,object,statements 等。使用非常简单。

JDK 9 EA(Early Access)下载地址: https://jdk9.java.net/download/

G:\>jshell | Welcome to JShell -- Version 9-ea | For an introduction type: /help intro jshell> int a = 10 a ==> 10 jshell> System.out.println("a value = " + a ) a value = 10

有关 REPL 工具的更多信息,可访问 Java 9 REPL Basics (Part-1)Java 9 REPL Features (Part-2) .

2. 不可变集合类的工厂方法

Oracle 公司引入一些方便使用的工厂方法,用于创建不可变集合 List,Set,Map 和 Map.Entry 对象。这些高效实用的方法可用来创建空或者非空集合对象。

在 Java SE 8 和更早版本中,我们常用类似 unmodifiableXXX 的集合类方法创建不可变集合对象。举个例子,比如我们想创建一个不可变的 List 对象,可能使用到 Collections.unmodifiableList 方法。

然而,这些 Collections.unmodifiableXXX 方法显得非常冗长乏味。为了克服这些缺陷,Oracle 公司给 List、Set 和 Map 接口分别添加了两个更加实用的方法。

List 和 Set 接口使用 of() 方法创建一个空或者非空的不可变 List 或 Set 对象,如:

空 List 示例

List immutableList = List.of();

非空 List 示例

List immutableList = List.of("one","two","three");

Map 分别有两个方法用于创建不可变 Map 对象和不可变 Map.Entry 对象: of() 和 ofEntries() 。

空 Map 示例

jshell> Map emptyImmutableMap = Map.of() emptyImmutableMap ==> {}

非空 Map 示例

jshell> Map nonemptyImmutableMap = Map.of(1, "one", 2, "two", 3, "three") nonemptyImmutableMap ==> {2=two, 3=three, 1=one}

更多有关这些实用方法的信息,可以通过这些链接查询:

3. 接口中的私有方法

在 Java 8 中,我们可以在接口中使用默认或者静态方法提供一些实现方式,但是不能创建私有方法。

为了避免冗余代码和提高重用性,Oracle 公司准备在 Java SE 9 接口中引入私有方法。也就是说从 Java SE 9 开始,我们也能够在接口类中使用 ‘private’ 关键字写私有化方法和私有化静态方法。

接口中的私有方法与 class 类中的私有方法在写法上并无差异,如:

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7bd0569eb9a2e0e540e2a76342a15db5.html