Java Lambda表达式
函数式接口
任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数时接口
public interface Runnable{
public abstract void run();
}
推导方法:
定义一个函数式接口 --> 实现类 --> 静态内部类 --> 局部内部类 --> 匿名内部类(没有类的名称, 必须借助接口或者父类) --> 用lamda简化
package com.Li.moveLine;
public class Dome04 {
//静态内部类
static class Like2 implements ILike{
@Override
public void lamda() {
System.out.println("xihuan2");
}
}
public static void main(String[] args) {
ILike like = new Like();
like.lamda();
like = new Like2();
like.lamda();
//局部内部类(就是在main中实现)
class Like3 implements ILike{
@Override
public void lamda() {
System.out.println("xihuan3");
}
}
like = new Like3();
like.lamda();
// 匿名内部类(直接调用接口)
like = new ILike() {
@Override
public void lamda() {
System.out.println("xihuan4");
}
};
like.lamda();
like = ()-> System.out.println("xihuan5");
like.lamda();
}
}
// 创建接口
interface ILike{
void lamda();
}
// 实现类
class Like implements ILike{
@Override
public void lamda() {
System.out.println("xihuan");
}
}
总结
lambda 表达式只能又一行代码的情况下才能简化成一行, 如果有多行, 马那么就用代码块包裹
前提是接口为函数式接口,且只能有一个函数式
多个参数也可以去掉参数类型, 要去掉都去掉, 必须加上括号
like = (int a,int b){
sout...;
sout...;}
标签:lamda,Java,like,void,lamdba,ILike,接口,public,表达式
From: https://www.cnblogs.com/1618lll/p/17092427.html