首页 > 其他分享 >Lamda表达式推演

Lamda表达式推演

时间:2022-12-28 00:12:08浏览次数:37  
标签:Lamda wc void 推演 接口 Test TestLamda public 表达式

Lamda表达式推演

在推演Lanmda表达式前,需要知道什么是函数式接口。

函数式接口

  • 只包含唯一一个抽象方法的接口,就是函数式接口。
//无参函数接口
public interface Runnabe{
    public abstract void run();
}
//有参函数接口
public interface Runnabe{
    public abstract void run(int id,User user);
}
  • 函数式接口可以通过Lamda表达是来创建该接口的对象。

Lamda表达式推演

定义一个接口

可以是无参,可以是有参。后面以无参为主,有参推演同理。

//无参函数接口
public interface TestWC{
    public abstract void wc();
}
//有参函数接口
public interface TestYC{
    public abstract void yc(int id,User user);
}

定义实现类

class Test_01 implements TestWC {
    //实现接口中的wc()方法,此不做演示
    @Override
    public void wc(){
        System.out.prinln("i like lamda")
    }
}

推演

/*正常情况:
新建对象,在通过对象调用方法*/
public class TestLamda{
    public static void main(String[] args) {
        //新建对象
        TestWC wc = new Test_01();
        //调用方法
        wc.wc();
    }
} 

/*第一次简化:
把实现类Test_01优化为TestLamda类的静态内部类*/
public class TestLamda{
    //静态内部类
    static class Test_02 implements TestWC {
    	//实现接口中的wc()方法,此不做演示
    	@Override
    	public void wc(){
             System.out.prinln("i like lamda02")
    	}
	}
    
    public static void main(String[] args) {
        //新建对象
        TestWC wc = new Test_02();
        //调用方法
        wc.wc();
    }
} 

/*第二次简化:
把静态内部类Test_02优化为TestLamda类的局部内部类*/
public class TestLamda{
    public static void main(String[] args) {
        //局部内部类
        class Test_03 implements TestWC {
            //实现接口中的wc()方法,此不做演示
            @Override
            public void wc(){
                System.out.prinln("i like lamda03")
            }
        }
        
        //新建对象
        TestWC wc = new Test_03();
        //调用方法
        wc.wc();
    }
} 

/*第三次简化:
把局部内部类Test_03优化为TestLamda类的匿名内部类*/
public class TestLamda{
    public static void main(String[] args) {
        //局部内部类:没有类的名字,必须借助接口或者父类
        TestWC wc = new Test_04(){
            //实现接口中的wc()方法,此不做演示
            @Override
            public void wc(){
                 System.out.prinln("i like lamda04")
            }
        };
        //调用方法
        wc.wc();
    }
} 

/*第四次简化:
把局部内部类Test_04优化为TestLamda类的匿名内部类*/
public class TestLamda{
    public static void main(String[] args) {
        //局部内部类:没有类的名字,必须借助接口或者父类
        TestWC wc = new Test_05(){
            //实现接口中的wc()方法,此不做演示
            @Override
            public void wc(){
                 System.out.prinln("i like lamda05")
            }
        };
        //调用方法
        wc.wc();
    }
} 

/*第五次简化:
用Lamda简化匿名内部类*/
public class TestLamda{
    public static void main(String[] args) {
        
        TestWC wc = ()->{
                 System.out.prinln("i like lamda06")
        };
        //调用方法
        wc.wc();
    }
} 

有参的函数接口与无参的函数接口推导同理,这里不再推理。

标签:Lamda,wc,void,推演,接口,Test,TestLamda,public,表达式
From: https://www.cnblogs.com/silence1020/p/17009280.html

相关文章