Java中接口的实现类 是不断地简化的一个过程 Lambda表达式几乎是最简单的方式
对应的代码阐述
Lambda表达式的由来与必要条件
顺序是从 外部类-》静态内部类-》局部内部类-》匿名内部类-》Lambda表达式
必要条件之一是接口为函数式接口 接口中一个函数 比如说Runnable接口 只有一个run方法
Lambda表达式无参实现方法
package Study.Test.Lambda;
public class LambdaTest {
//静态内部类
static class Love2 implements Like{
@Override
public void ILike() {
System.out.println("I love2");
}
}
public static void main(String[] args) {
Like k = new Love();
k.ILike();
k = new Love2();
k.ILike();
//局部内部类
class Love3 implements Like {
@Override
public void ILike() {
System.out.println("I love3");
}
}
Like kk = new Love3();
kk.ILike();
//匿名内部类 没有对应的实现类的 名字出现 只有借助接口来实现效果
//借助接口直接实现接口的方法
k = new Like() {
@Override
public void ILike() {
System.out.println("I love4");
}
};
k.ILike();
//使用lambda表达式来实现
k = ()->{
System.out.println("I l");
};
//这里是无参实现
k.ILike();
}
}
interface Like{
void ILike ();
}
//设置的对应的接口实现类 通过外部类解决问题
class Love implements Like{
@Override
public void ILike() {
System.out.println("I love");
}
}
Lambda表达式有参实现
package Study.Test.Lambda;
public class Can {
public static void main(String[] args) {
T a = (m)->{
System.out.println(m + "123");
};
//这里省略掉了传入参数的类型 直接用m表示传入的参数类型
a.Test(11);
//多个参数也是同理 不过必须也是函数式接口
}
}
interface T {
void Test(int a);
}
Lambda表达式的实质
是将对应的所需要的核心语句给予给对应的接口对应 实现所想要的功能
Lambda表达式MVP获奖者 Runnable接口 可以直接利用Runnable接口来获取想要的方法 后直接丢到Thread之中
package Study.Test.Lambda;
public class T1 {
public static void main(String[] args) {
Runnable run = ()->{
for (int i = 0; i < 10; i++) {
System.out.println(1);
}
};
Thread what = new Thread(run);
what.start();
}
}
还有更简单的使用Lambda表达式实现
Runnable方法的实现
package Thread;
//最简便的方法是将对应的Lambda表达式放在线程初始化之中 最简便 也最难读懂
public class Lambda {
public static void main(String[] args) {
Thread mm = new Thread(
()->{System.out.println("123");}
);
}
}