Java JDK1.8函数接口

mac2024-05-23  39

Lambda最最最重要口诀:拷贝小括号 , 写死右箭头 , 落地大括号 Lambda表达式是给函数式接口的形参或变量赋值用的一段代码

@FunctionalInterface //隐身修饰,取消可以有多个抽象方法,加上只能有一个 interface Function{ //函数接口里必须有一个抽象方法 void fun(int x,int y,int z); //可以有多个default修饰的方法 default int add2(int x,int y){ System.out.println( add3(5,6)); return x + y; } //静态方法只能用于类之间调用,其它类不能调用 static int add3(int x,int y){ return x + y; } default void add4(int x){ for (int i = 0; x < 10;x++){ System.out.println("打印;"+x); } } } /** * 1.8接口:1.函数接口@FunctionalInterface * 2.static静态方法 * 3.default修饰的方法 * 4.表达式 * 拷贝小括号 , 写死右箭头 , 落地大括号 */ class Test { public static void main(String[] args) { Function function = (x,y,z) -> {}; //这里的参数对应抽象方法 System.out.println(function.add2(5,8)); //调用方法 function.add4(3);

Lambda细节操作

import java.util.TreeSet; class User{ private Integer id; private Integer age; private String name; public User(Integer id, Integer age, String name) { this.id = id; this.age = age; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User{" + "id=" + id + ", age=" + age + ", name='" + name + '\'' + '}'; } } /** * Lambda 表达式是给函数式接口的形参或变量赋值用的(是一段代码) * 必须是给这个函数式接口的抽象方法传代码复用的 * * 格式: (形参)->{lambda方法体} * 形参列表就是函数接口的抽象方法的形参列表 * 方法体就是函数式接口的抽象方法的方法体 * */ class Test { public static void main(String[] args) { //按照年龄从低到高 TreeSet<User> user = new TreeSet<>((o1, o2) -> Double.compare(o1.getAge(),o2.getAge())); user.add(new User(1,79,"李元霸")); user.add(new User(2,23,"李元")); for(User user1 :user){ System.out.println(user1); } } } User{id=2, age=23, name='李元'} User{id=1, age=79, name='李元霸'}

细节说明

1.当(形参)是空参,那么()是不能省略 2.当(形参)是有参,类型可以确定,形参的数据类型可以省略 3.当(形参)有参,并且只有一个形参,类型和()都可以省略 4.{lambda方法体}有多个语句,每句语句都要;结束 5.{lambda方法体}只有一个语句,{} 和 ; 可以同时省略 6.如果函数接口的抽象方法的返回值类型不是void,那么{lambda方法体}里面要有return返回值语句 如果{lambda方法体}中只有一个{return 返回值;}语句时,次时{} ; return关键字这三样都可以同时省略 7.形参名可以根据自己定义

最新回复(0)