功能:
1、避免内部类定义过多
2、其 实质 属于函数式编程的概念
函数式接口
理解Functional Interface(函数式接口)是学习Java8 lamda表达式的关键所在
任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口
public interface Runnable{
public abstract void run();
}
对于函数式接口,我们可以通过lamda表达式来创建该接口的对象
//总结Lamda表达式
// 1、只能有一行代码的情况下才能简化,若有多行就需要{}
// 2、前提是函数式接口
// 3、多个参数也可以去除参数类型,要去掉都去掉,多参数的时候需要()
package Kuang;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
public class lamda01 {
public static void main(String[] args) {
ILike like = new student();//实现类
like.lamda();
like = new like2(); //静态内部类
like.lamda();
//4 局部内部类
class like3 implements ILike {
@Override
public void lamda() {
System.out.println("i like lamda3");
}
}
like = new like3(); //局部内部类 为什么放定义之后就不识别了,因为没有任何优先级,和对象声明一样,不声明就引用不了
like.lamda();
//匿名内部类,没有类的名称,必须借助接口或父类
like = new ILike() {
@Override
public void lamda() {
System.out.println("i like lamda4");
}
};
like.lamda();
//JDK 1.8 用lamda简化
like = () -> {
System.out.println("i like lamda5");
};
like.lamda();
}
//3 静态内部类
static class like2 implements ILike {
@Override
public void lamda() {
System.out.println("i like lamda2");
}
}
}
//1 定义一个函数式接口
interface ILike {
void lamda();
}
//2 实现类
class student implements ILike {
@Override
public void lamda() {
System.out.println("i like lamda");
}
}
package Kuang;
public class lamda02 {
public static void main(String[] args) {
//JDK 1.8 用lamda简化
love love1 = (int a) -> {
System.out.println("i love lamda5"+a);
};
love1.loveyou(521);
//简化2 参数类型
love1 = (a)-> {
System.out.println("i love lamda6"+a);
};
love1.loveyou(521);
//简化3 简化()
love1 =a-> {
System.out.println("i love lamda7"+a);
};
love1.loveyou(521);
//简化4 简化{}
love1 =a-> System.out.println("i love lamda8"+a);
love1.loveyou(521);
//总结Lamda表达式
// 1、只能有一行代码的情况下才能简化,若有多行就需要{}
// 2、前提是函数式接口
// 3、多个参数也可以去除参数类型,要去掉都去掉,多参数的时候需要()
}
//1 定义一个函数式接口
interface love {
void loveyou(int a);
}
}