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