当前位置: 代码迷 >> 综合 >> 不是太细的java自学笔记进阶篇9(P662-690)( 完 )(代理模式,lambda,方法引用,Stream,optional)
  详细解决方案

不是太细的java自学笔记进阶篇9(P662-690)( 完 )(代理模式,lambda,方法引用,Stream,optional)

热度:43   发布时间:2023-12-17 14:07:01.0

目录:

动态代理:

代理模式:

静态代理举例:

动态代理举例(P664):

动态代理和AOP

java8新特性

Lambda

小案例:

语法:

函数式接口:

小案例:

方法引用和构造器引用(: :)

方法引用情况1:

方法引用情况2:

方法引用情况3:

构造器引用(举例居多):

数组引用:

Stream API:

Stream中间操作

筛选和切片:

映射:

排序

终止操作

匹配和查找

归约:

收集:

Optional类

小案例:


动态代理:

代理模式:

  

静态代理举例:

   

动态代理举例(P664):

      

动态代理和AOP

  

java8新特性

Lambda

 

 

小案例:

只能用于接口,并且这个接口只有一个抽象方法

   

语法:

 

java中Lambda表达式的本质:作为接口的一个实例

       

函数式接口:

如果一个接口中,只有一个抽象方法,这个就是一个函数式接口:

这个注解就是声明这是一个函数式接口

  

在java.util.function包下定义了java8的丰富的函数式接口

 

消费型:有入无出

供给型:有出无入

函数型:输入一个输出一个,输出类型可以不一样

断定型:就是判断

小案例:

 

 

 

方法引用和构造器引用(: :)

 

接口本身需要有一个方法的实现,然后在实现这个方法的过程中,饿哦们使用了另一个方法来实现,并且这两个方法(要实现的方法,实现方法中调用的另一个方法)的参数相同,就可以使用方法引用,如下小栗子:

方法引用情况1:

 

小案例2:

我们可以明确在Supplier中只有一个get方法需要实现,且这个方法是一个空参方法,然后为了实现这个get方法,我们需要使用getName方法来实现get方法,且这个getName方法本身也是空参的,所以我觉得这个语法就是指明使用的对象::这个对象方法

 

方法引用情况2:

  

方法引用情况3:

   

构造器引用(举例居多):

    

数组引用:

 

Stream API:

     

顺序流就是按照顺序进入,并行流就不一定了

   

Stream中间操作

筛选和切片:

    

这个就有点像数据库操作,注意这些都是中间操作,还需要最后的操作

映射:

   

首先理解一下这个,使用add加上list2之后,整个数组有4个元素,

使用addAll之后就会有6个元素

flatMap就和addAll的效果类似,就是把字符串中的集合转换成Stream中的实例

  

排序

   

终止操作

匹配和查找

     

归约:

   

收集:

   

Optional类

为了在程序中避免空指针异常而创建的。

  

这个get操作需要确定我们所得到的一定是一个非空数值。

小案例:

   

 

 

 

  相关解决方案