内部类&&匿名内部类&&lambda表达式

内部类大致分为,成员内部类,局部内部类,匿名内部类和内静态内部类;
而用于容接口的内部类多是匿名内部类,
匿名内部类不能有构造方法。

匿名内部类不能定义任何静态成员、方法和类。
匿名内部类不能是public,protected,private,static。
只能创建匿名内部类的一个实例。

//假设类A有静态内部类B和非静态内部类C,创建B和C的区别为: 
A a=new A(); 
A.B b=new A.B(); 
A.C c=a.new C();

用匿名类实现接口的方法:

在一个方法中写一个内部类:

lanbda表达式,其实本质来讲,就是一个匠名函数。因此在写lambda表达式的时候,不需要关心方法名是什么。
实际上,我们在写lambda表达式的时候,也不需要关心返回值类型。我们在写lambda表达式的时候,只需要关注两部分内容即可:参数列表和方法体
lambda表达式的基础语法:

参数部分:方法的参数列表,要求和实现的接口中的方法参数部分一致,包括参数的数量和类型。.
方法体部分:方法的实现部分,如果接口中定义的方法有返回值,则在实现的时候,注意返回值的返回。
-> :分隔参数部分和方法体部分。

表达式语法简化:

1、参数列表中只有一个形参可以去掉(),方法体只有一条语句可省去{},如果唯一的一条语句是return,则return也省掉

2、形参列表中可以同时去掉参数类型

函数引用:

静态引用:

语法:类::静态方法
注意事项:在引用的方法后面,不要添加小括号。
                  引用的这个方法,参数(数量、类型)和返回值,必须要跟接口中定义的一致。

非静态方法的引用
语法:对象::非静态方法
注意事项:在引用的方法后面,不要添加小括号。
                  引用的这个方法,参数(数量、类型)和返回值,必须要跟接口中定义的一致。

构造方法的引用使用场景.
如果某一个函数式接口中定义的方法,仅仅是为了得到一个类的对象。此时我们就可以使用构造方法的引用,简化这个方法的实现。类名::new
注意事项:可以通过接口中的方法的参数,区分引用不同的构造方法。


对象方法的特殊引用
如果在使用1ambda表达式,实现某些接口的时候。lambda表达式中包含了某一个对象,此时方法体中,直接使用这个对象调用它的某一个方法就可以完成整体的逻辑。其他的参数,可以作为调用方法的参数。此时,可以对这种实现进行简化。

方法的引用 ::,代码更加紧凑简洁。

调用System.out中的print方法。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值