JDK1.8的新特性之lambda表达式的三种引用
来源:互联网 发布:刷火车票软件 编辑:程序博客网 时间:2024/06/05 18:26
package com.ilike.test;
import java.io.PrintStream;
import java.util.Comparator;
import java.util.function.BiPredicate;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import org.junit.Test;
/**
*
* @author 桑伟东
* 一、方法引用:若lambda体中的内容已经有方法已经实现了,我们可以使用“方法引用”
* (可以理解为方法引用是lambda表达式的另外一种表现形式)
*
* 主要有三种语法格式
*
* 对象::实例方法名
*
* 类::静态方法名
*
* 类::实例方法名
*
* 注意:
* ①Lambda体中掉欧阳方法的参数列表和方法的返回值类型要与函数式接口中抽象方法的参数列表和返回值类型保持一致!
* ②若Lambda参数列表中的第一个参数是实例方法的调用者,而第二个参数是实例方法的参数时,可以使用ClassName::Method
*
* 二、构造器引用:
* 格式:
* ClassName::new
* 注意:需要调用的构造器的参数列表要与函数式接口中抽象方法的参数列表保持一致
*
* 三、数组引用:
* 格式:
* Type[]::new
*
*/
public class TestMethodInf {
// 数组引用:@Testpublic void test7() { Function<Integer, String[]> f = (x) -> new String[x]; Function<Integer, String[]> f2 = String[]::new; String[] s = f2.apply(10); System.out.println(s.length);}// 构造器引用@Testpublic void test5() { Supplier<Student> sp = () -> new Student(); // 构造器引用方式 Supplier<Student> sp2 = Student::new; Student student = sp2.get(); System.out.println(student);}@Testpublic void test6() { Function<String, Student> f = (x) -> new Student(x); Function<String, Student> f2 = Student::new; Student student = f2.apply("桑伟东"); System.out.println(student);}// 类::实例方法名@Testpublic void test4() { BiPredicate<String, String> bp = (x, y) -> x.equals(y); BiPredicate<String, String> bp2 = String::equals;}// 类::静态方法名@Testpublic void test3() { Comparator<Integer> comparator = (x, y) -> Integer.compare(x, y); Comparator<Integer> comparator2 = Integer::compare;}// 对象::实例方法名@Testpublic void test1() { PrintStream ps = System.out; Consumer<String> consumer = (x) -> ps.println(x); PrintStream ps1 = System.out; Consumer<String> consumer2 = ps1::println; Consumer<String> consumer3 = System.out::println; consumer3.accept("djgshdfghjhfgldfg");}@Testpublic void test2() { Student student = new Student(); Supplier<Integer> s = () -> student.getAge(); Integer age = s.get(); System.out.println(age); Supplier<String> s2 = student::getName; String name = s2.get(); System.out.println(name);}
}
package com.ilike.test;
public class Student {
private String name;
private int age;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 Student(String name, int age) { this.name = name; this.age = age;}public Student(String name) { this.name = name;}public Student() {}@Overridepublic String toString() { return "Student [name=" + name + ", age=" + age + "]";}
}
- JDK1.8的新特性之lambda表达式的三种引用
- JDK1.8的新特性之Lambda表达式的应用
- jdk1.8 新特性之 lambda表达式
- Android 使用jdk1.8新特性之lambda表达式
- Java JDK1.8新特性Lambda 表达式
- JDK1.8新特性--Lambda 表达式
- Java 8新特性:新语法方法引用和Lambda表达式及全新的Stream API
- JDK1.8新特性(二)Lambda表达式入门
- jdk1.8新特性之Lambda表达式及在Android Studio中的使用
- 【C++】C++11新特性 之 lambda表达式的使用
- Java 8 新特性之 Lambda 表达式
- Java 8 新特性之 Lambda表达式
- java8新特性之函数式接口、lambda表达式、接口的默认方法、方法和构造函数的引用
- Java 8 新特性:Lambda 表达式之方法引用(Lambda 表达式补充版)——诺诺"涂鸦"记忆
- Java 8的新特性(含Lambda表达式)
- JDK1.5-JDK1.8的新特性
- jdk1.8的新特性
- JDK1.8的新特性之Stream流的使用
- iOS 应用内吊起短信发送功能
- net-snmp开发过程整理-两个工具
- 14.异常
- shell 中的for、while循环及if语句
- C++的前世今生
- JDK1.8的新特性之lambda表达式的三种引用
- sql Server 数据库 设置自增建的初始值 和 增量
- HDU2021发工资咯:)
- darwin之发送数据流(ReflectorSession)
- 利用视图实现数据库表列变行
- Android 加载图片过程导致内存溢出(Out Of Memory)
- 银行行长说申请信用卡,这样选3天通过
- Java 循环练习
- JEECG树相关网上找的资料