为什么要使用这个表达式
总之就是为了简化我们的代码
什么叫做函数式接口
定义
记住:必须是一个接口里面只有一个抽象方法
推到出lamda表达式
必须是函数式接口 才可以使用这个表达式
最开始写代码
之前我们写代码,是先写一个接口,写一个类实现这个接口,重写里面的方法。 在主函数里面创建这个类的对象,执行里面的方法
public class TestLambda {
public static void main(String[] args) {
lambdaclass lambdaclass = new lambdaclass();
lambdaclass.lambda();
}
}
interface like{
void lambda();
}
class lambdaclass implements like{
@Override
public void lambda() {
System.out.println("jjjjjjjjj");
}
}
静态内部类
现在我们直接在主函数的类里面写一个静态内部类
也就是直接在类里面再创建一个类
public class TestLambda {
static class like2 implements like{
@Override
public void lambda() {
System.out.println("pppppppp");
}
}
public static void main(String[] args) {
like2 like2 = new like2();
like2.lambda();
}
}
interface like{
void lambda();
}
局部的内部类
我们还可以在主函数方法里面 写一个局部的内部类
public class TestLambda {
public static void main(String[] args) {
class like2 implements like{
@Override
public void lambda() {
System.out.println("pppppppp");
}
}
like2 like2 = new like2();
like2.lambda();
}
}
interface like{
void lambda();
}
匿名内部类
匿名内部类 也就是借助接口 或者 父类
public class TestLambda {
public static void main(String[] args) {
like yuyu =new like(){
@Override
public void lambda() {
System.out.println("与");
}
};
yuyu.lambda();
}
}
interface like{
void lambda();
}
lambda
也就是对象不要了,方法名字不要了,只要方法里面的具体实现 接口 接一下这个
public class TestLambda {
public static void main(String[] args) {
like yuyu =()->{
System.out.println("与");
};
yuyu.lambda();
}
}
interface like{
void lambda();
}
将参数类型简化掉
如果接口里面的方法有参数,那么我们可以简化掉参数类型
有参数类型的代码是:
public class TestLambda {
public static void main(String[] args) {
like yuyu =(int a) ->{
System.out.println(a);
};
yuyu.lambda(2);
}
}
interface like{
void lambda(int a);
}
简化掉的参数类型是:
public class TestLambda {
public static void main(String[] args) {
去掉参数里面的参数类型
like yuyu =( a) ->{
System.out.println(a);
};
yuyu.lambda(2);
}
}
interface like{
void lambda(int a);
}
将括号也去掉
前提是有一个参数,如果多个参数,不可以将括号去掉
public class TestLambda {
public static void main(String[] args) {
like yuyu = a ->{
System.out.println(a);
};
yuyu.lambda(2);
}
}
interface like{
void lambda(int a);
}
将花括号去掉
前提是方法里面只有一句话输出
public class TestLambda {
public static void main(String[] args) {
like yuyu = (a,b) -> System.out.println(a+b);
yuyu.lambda(2,5);
}
}
interface like{
void lambda(int a,int b);
}