JAVA 9的一些新特性

java 92017921日发布,今天我们就通过实例来观察下java 9的几个最值得期待的特性。

1.JShell

2. Convenience Factory Methods for Collections

3.接口中的私有方法

 

1.JShell----The Java Shell

Jshell 是一个命令行工具,用来把REPL(Read-Eval-print Loop)和java语言包裹起来。

         Java + REPL =JShell

       REPL(Read-Eval-print Loop)是一个交互式的编程工具,会不停地读取用户的输入,并且计算输入,然后把计算的结果或者由于这个结果导致的状态描述打印出来。

早期的java,如果想打印“Hello World”,就需要创建一个公共类和main方法才可以。

Scala,Ruby,JavaScript,Haskell,Clojure,and Python 都允许编辑一些小型初始程序。Jshell把REPL功能添加到了java平台上.

比如:

2.Collections的便利工厂方法

java因冗长而备受诟病,创建一个小型不可修改的集合就需要很多代码。比如

      我们并不是说这是创建一个不可修改的集合的非唯一方法。我们也可以使用List接口的复制构造函数,双支撑技术或者java的Stram 的API来初始化集合。但是这些方式都比较冗长无聊。

 

      为了在java 9中克服这些问题,于是在List,Set,Map接口中引入了静态方法,静态方法会把元素当做参数,然后可以各自返回List,Set和Map的一个实例。三个接口拥有同样的静态方法的名字-----of(…)

 

举例:

List,Set和Map工厂方法的签名和特征是一样的

3.接口中的私有方法

    在java 7及早期版本中,接口非常简单,只包含public abstract方法。

    但从java 8开始,接口中允许添加public static 方法和public default方法。

     java 9 则在接口允许添加private方法.

 

        因此,接口中的方法可以是private也可以是public(如果没有指定,默认是public)。private修饰的方法可以是静态方法或者实例。同时private修饰的方法都不会被子接口或者实现类继承。

 

在java 9中,接口中允许添加额外两个成员:

      private methods

     private static methods

 

为啥为允许添加私有方法?

       在java 8的时候,我们偶尔会想在接口中引入一些默认和静态的方法,而这些方法有着共同的代码基础。比如,很多连接数据库的默认的方法就比较麻烦。如果可以为数据库连接提供一些公用的方法就好了,是吧。

 

如果把这些公共的方法声明为public会如何?

       因为public 修饰的方法就会暴露在外界,所以任何人都可以使用这些方法连接数据库甚至执行一些非法的数据库操作。

       总的来说,如果需要公开多个默认方法,可以通过私有接口方法实现,但是私有方法和所有通过接口执行的一些细节就不会暴露在外界。

https://codepumpkin.com/java-9-features/#privateMethod

小白翻译,如果错误或不准确,欢迎大家指出,共同进步~~

猜你喜欢

转载自blog.csdn.net/qq_40531768/article/details/88050644