解释都在注释中
基本概念以及用法
package Demo16Lambda;
public class lambda {
public static void main(String[] args) {
Comparator comparator = new mycompartor();
Comparator comparator1 =new Comparator() {
@Override
public int compartoor(int a, int b) {
return a-b;
}
};
Comparator comparator2 = ((a, b) -> a-b);
}
}
class mycompartor implements Comparator{
@Override
public int compartoor(int a, int b) {
return a-b;
}
public void shixain(){
System.out.println("this is a shixian");
}
}
@FunctionalInterface
interface Comparator{
int compartoor(int a,int b);
default void jiekou(){
System.out.println("this is a jiekou");
}
}
定义六个接口,表示出具体用法

实现
package Demo16Lambda.syntax;
import Demo16Lambda.interfaces.*;
public class Syntax1 {
public static void main(String[] args) {
LambdaNoneReturnNoneParamter lambda1 =()->{
System.out.println("hello");
};
lambda1.test();
LambdaNoneReturnSingleParamter lambda2=(int a)->{
System.out.println(a);
};
lambda2.test(10);
LambdaNoneReturnMutipleParameter lambda3=(int a ,int b)->{
System.out.println(a+b);
};
lambda3.test(12,55);
LambdaSingleReturnNoneParameter lambda4=()->{
System.out.println("lambda4");
return 100;
};
int test = lambda4.test();
System.out.println(test);
LambdaSingleReturnSingleParameter lambda5=(int a )->{
System.out.println("lambda5");
return a*2;
};
int test1 = lambda5.test(500);
System.out.println(test1);
LambdaSingleReturnMutipleParameter lambda6=(int a,int b )->{
return a*2+b*4;
};
int test2 = lambda6.test(500,100);
System.out.println(test2);
}
}
简写
package Demo16Lambda.syntax;
import Demo16Lambda.interfaces.*;
public class Syntax2 {
public static void main(String[] args) {
LambdaSingleReturnMutipleParameter lambda1= (a,b)->{
System.out.println("xixixi");
return a*2+5*b;
};
System.out.println(lambda1.test(12,55));
LambdaSingleReturnSingleParameter lambda2 = a -> {
System.out.println("hshhh");
return a*5;
};
System.out.println(lambda2.test(44));
LambdaNoneReturnSingleParamter lambd3= a ->System.out.println("asdasd");
LambdaSingleReturnNoneParameter lambda4 = () ->10;
}
}
简写2
package Demo16Lambda.syntax;
import Demo16Lambda.interfaces.LambdaSingleReturnSingleParameter;
public class Syntax3 {
public static void main(String[] args) {
LambdaSingleReturnSingleParameter lambda1 =a -> change(a);
LambdaSingleReturnSingleParameter lambda2 =Syntax3::change;
}
private static int change(int a) {
return a*2;
}
}
构造方法的引用
package Demo16Lambda.syntax;
import Demo16Lambda.data.Person;
public class Syntax4 {
public static void main(String[] args) {
PersonCreater personCreater =()->new Person();
PersonCreater creater= Person::new;
Person a= creater.getPerson();
PersonCreater2 creater2 =Person::new;
Person b = creater2.getPerson("haha",20);
}
}
interface PersonCreater{
Person getPerson();
}
interface PersonCreater2{
Person getPerson(String name,int age);
}