Java8实战 阅读二周目感想

Java8实战是我目前看过的写的水平最高的一本书,由浅入深,深入浅出,九浅一深.

之前大略的过了一遍,但是对于前几章的内容一直有点雾里看花的感觉.

又读了一遍,感觉有点新的感想.

一.其中1.2.1中谈到了在之前的java版本中,值才是一等公民.方法和类等是二等公民.

我觉得这么理解可能会更好:

在1.8之前的java版本中.方法中只能传递值.要么是基本数据类型,要么是引用数据类型.总而言之,都是值.

但是在java8中打破了这个规律,可以把方法引用传递给一个方法.这就是书中讲的,将方法和lambda表达式作为一等公民的含义.

函数式编程风格,其实就是"编写把函数作为一等值来传递的程序".

二.默认方法

假如我是java的开发者,负责java版本的升级,在升级的过程中我往Collection API里面加入了一个新接口.那么,那些使用到Collection API的框架,代码都必须提供对这个接口的实现.否则编译都会不通过

但是,是否实现这个接口是语言开发者没有办法控制的.如果简单粗暴的直接添加接口势必造成各种各样的事故.我必须兼容之前的代码.(python2和python3就是一个很恰当的反例).

所以,java8中给我们带来了一个新的内容,就是默认方法.

可以很方便的扩充接口,而不会对现有的代码进行破坏.

三.行为参数化

让方法接受多种行为作为参数,并在内部使用,来完成不同的行为.

四:方法引用之构造方法引用

我看到书中写可以利用名称和关键字new来创建一个构造方法的引用. 比如Supplier<Apple> apple = Apple::new;

在这里我想了一会没想明白,万一Apple中有一个名为new的方法怎么办呢,那编译器怎么知道是调用那个方法呢,到底是调用构造函数呢还是new方法呢?

后来突然恍然大悟,new是关键字啊,哪有方法名为new的方法................蠢了蠢了

posted @ 2019-05-14 11:08  天糊十三幺  阅读(197)  评论(0编辑  收藏  举报