Lamda表达式
1.为什么要用lamda表达式(函数式编程)
-
避免匿名内部类定义过多。
-
代码简洁。
-
去掉没有意义代码,只留下核心逻辑。
new Thread (()->System.out.println("多线程学习")).start()
2.函数式接口定义:
-
任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
public interface Runnable {
public abstract void run();
}
对于函数式接口,我们可有通过lamda表达式来创建接口对象。
public class TestLamda {
// 静态内部类
static class Like2 implements ILike{
@Override
public void lamda() {
System.out.println("i like lamda2");
}
}
public static void main(String[] args) {
ILike like = new Like();
like.lamda();
ILike like2 =new Like2();
like2.lamda();
// 局部内部类
class Like3 implements ILike{
@Override
public void lamda() {
System.out.println("i like lamda3");
}
}
ILike like3 = new Like3();
like3.lamda();
// 匿名内部类
like = new ILike(){
public void lamda() {
System.out.println("i like lamda4");
}
};
like.lamda();
// 用lamda简化
like = () -> {
System.out.println("i like lamda5");
};
like.lamda();
}
}
// 定义一个函数式接口
interface ILike{
void lamda();
}
class Like implements ILike{
@Override
public void lamda() {
System.out.println("i like lamda");
}
}
public class TestLamda2 {标签:lamda,like,Lamda,System,println,public,表达式,out From: https://www.cnblogs.com/yuan947022015/p/17654611.html
static class Love1 implements ILove{
@Override
public void love(int a) {
System.out.println("i love you2");
}
}
public static void main(String[] args) {
/**
* // 1.lamda表达示简化
* ILove love = (int a) -> {
* System.out.println("i like you5");
* };
* love.love(1);
*
* // 2.参数类型简化
* ILove love1 = (a) -> {
* System.out.println("i like you5");
* };
* love1.love(1);
*
* // 3.简化括号
* ILove love2 = a -> {
* System.out.println("i like you5");
* };
* love2.love(1);
* // 4.简化大括号
* ILove love2 = a -> System.out.println("i like you5");
* love2.love(1);
*/
// 总结
// lamba表达式只能有一行代码情况下才能简化成一行,如果有多行就用代码块包裹。
// 接口为函数式接口
// 多个参数也可以去掉类型,要是去掉括号,必须只有一个参数
}
}
interface ILove{
void love(int a);
}