代码:
从
(1)外部类
(2)静态内部类
(3)方法内部类
(4)匿名内部类
(5)Lambda
interface ILike{
void lamdaa();
}
//外部类
class Like implements ILike{
@Override
public void lamdaa() {
System.out.println("i like lamda1 外部类实现");
}
}
public class LamdaTest01 {
//静态内部类
static class Like2 implements ILike{
public void lamdaa() {
System.out.println("i like lamda2 静态内部类");
}
}
public static void main(String[] args) {
//
ILike like = new Like();
like.lamdaa();
like = new Like2();
like.lamdaa();
//方法内部类
class Like3 implements ILike{
@Override
public void lamdaa() {
System.out.println("i like lamda3 方法内部类");
}
}
like = new Like3();
like.lamdaa();
//匿名内部类
like = new ILike() {
public void lamdaa() {
System.out.println("i like lamda4 匿名内部类");
}
};
like.lamdaa();
//lamda
like = ()->{
System.out.println("i like lamda5 real Lambda");
};
like.lamdaa();
}
}
Lambda加入参数
//Lamda推导
//加入参数
interface Duo{
void duo(int a,int b);
}
interface ILove{
void lamdaa(int a);
}
//外部类
class Love implements ILove{
@Override
public void lamdaa(int a) {
System.out.println("i love lamda"+a);
}
}
public class LamdaTest02 {
public static void main(String[] args) {
ILove love = (int a)->{
System.out.println("i love lamda"+a);
};
love.lamdaa(100);
//类型 自动去找
love = (a)->{
System.out.println("i love lamda"+a);
};
love.lamdaa(50);
//只有一个参数 括号也能省略
love = a->{
System.out.println("我可以不要括号( ) ,但是不能没有"+a);
};
love.lamdaa(1314);
//只有一行代码 还可以不要{}
love = a->System.out.println("我可以不要括号{ } ,但是不能没有"+a);
love.lamdaa(520);
//多参数
Duo dd =(a,b)->System.out.println("hello"+a+b);
dd.duo(55, 44);
}
}
Lambda 带返回值
interface ReturnNum{
int re(int a,int b);
}
class Re1 implements ReturnNum{
@Override
public int re(int a, int b) {
System.out.println("Lambda 带参数 a+b");
return a+b;
}
}
public class LamdaTest03 {
public static void main(String[] args) {
ReturnNum rr = (a,b)->{
System.out.println("Lambda 带参数 a+b");
return a+b;
};
System.out.println(rr.re(10, 10));
}
}
Lambda在线程中运用
public class LamdaTest04 {
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName());
new Thread(()->{
System.out.println(Thread.currentThread().getName());
}).start();
}
}