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. } }