java8新特性学习二(函数式functional接口)
2021-01-21 11:12
标签:其他 static int div 实现 use 需要 cti 学习 如果一个接口中,只声明了一个抽象方法,则此接口就称为函数式接口。 可以通过Lambda表达式来创建该接口的对象。(若Lambda表达式抛出一个受检异常(即:非运行时异常),那么该异常需要在目标接口的抽象方法上进行声明)。 我们可以在一个接口上使用@FunctionalInterface注解,这样做可以检查它是否是一个函数式接口。同事javadoc也会包含一条声明,说明这个接口是一个函数式接口。 在java 8中,Lambda表达式就是一个函数式接口的实例。这就是Lambda表达式和函数式接口的关系。也就是说,只要一个对象是函数式接口的实例,那么该对象就可以用Lambda表达式来表示。 在java.util.function包下定义了java 8的丰富的函数式接口。 java内置四大核心函数式接口 其他接口
当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用! 方法引用可以看做是Lambda表达式深层次的表达。换句话说,方法引用就是lambda表达式,也就是函数式接口的一个实例,通过方法的名字来指向一个方法,可以认为是Lambda表达式的一个语法糖。 要求:实现接口的抽象方法的参数列表和返回值类型,必须与方法引用的方法的参数列表和返回值类型保持一致! 格式:使用操作符“::”将类(或对象)与方法名分隔开来。 User类 和方法引用类似,函数式接口的抽象方法的形参列表和构造器的形参列表一致。 抽象方法的返回值类型即为构造器所属的的类的类型。 把数组看成是一个特殊的类,则写法与构造器引用一致。 java8新特性学习二(函数式functional接口) 标签:其他 static int div 实现 use 需要 cti 学习 原文地址:https://www.cnblogs.com/mabaoying/p/12893174.html函数式(functional)接口
方法引用与构造器引用
如下三种主要使用情况:
情况一,对象::实例方法名
@Test
public void test1(){
//Consumer
public class User {
private String id;
private String name;
private int age;
private String address;
public User(String id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public User() {
System.out.println("user无参构造");
}
public User(String id) {
this.id = id;
System.out.println("id构造=="+id);
}
public User(String name,int age) {
this.name = name;
this.age = age;
System.out.println("name,age构造=="+name+"=="+age);
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=‘" + id + ‘\‘‘ +
", name=‘" + name + ‘\‘‘ +
", age=" + age +
", address=‘" + address + ‘\‘‘ +
‘}‘;
}
}
情况二,类::静态方法名
@Test
public void test2(){
//Comparator
情况三,类::实例方法名(有难度)
@Test
public void test3(){
//Comparator
构造器引用
@Test
public void test4(){
//Supplier T get()
//User中的空参构造器:User()
Supplier
数组引用
@Test
public void test5(){
//Function R apply(T t)
Function
下一篇:《C程序设计语言》 练习2-8
文章标题:java8新特性学习二(函数式functional接口)
文章链接:http://soscw.com/index.php/essay/44955.html