LambdaTest2 方法引用的使用情况
package demo.java8;
import org.junit.Test;
import java.io.PrintStream;
import java.util.Comparator;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
public class LambdaTest2 {
/**
* 情况一:对象::实例方法
*/
@Test
public void test1() {
Consumer<String> consumer1 = str -> System.out.println(str);
consumer1.accept("北京");
System.out.println("******************************");
PrintStream printStream = System.out;
Consumer<String> consumer2 = printStream::println;
consumer2.accept("beijing");
}
/**
* Supplier中的T get()
* Employee中的String getName()
*/
@Test
public void test2() {
Employee employee = new Employee(10001, "Tom", 23, 5600);
Supplier<String> supplier1 = () -> employee.getName();
System.out.println(supplier1.get());
System.out.println("*******************************************");
Supplier<String> supplier2 = employee::getName;
System.out.println(supplier2.get());
}
/**
* 情况二:类::静态方法
* Comparator中的int compare(T t1,T t2)
* Integer中的int compare(T t1,T t2)
*/
@Test
public void test3() {
Comparator<Integer> comparator1 = (t1, t2) -> Integer.compare(t1, t2);
System.out.println(comparator1.compare(12, 21));
System.out.println("*************************");
Comparator<Integer> comparator2 = Integer::compareTo;
System.out.println(comparator2.compare(55, 12));
}
/**
* Function中的R apply(T t)
* Math中的Long round(Double d)
*/
@Test
public void test4(){
Function<Double, Long> function = new Function<Double, Long>() {
@Override
public Long apply(Double d) {
return Math.round(d);
}
};
System.out.println("******************************");
Function<Double, Long> function1 = (d) -> Math.round(d);
System.out.println(function1.apply(12.3));
}
/**
* 情况三:类::实例方法
* Comparator中的int compare(T t1,T t2)
* String中的int t1.compareTo(T t1,T t2)
*/
public void test5(){
Comparator<String> comparator1 = (s1,s2) ->s1.compareTo(s2);
System.out.println(comparator1.compare("abc","abd"));
System.out.println("***************************************");
Comparator<String> comparator2 =
}
}
Employee.java
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* Created by cute coder
* 2021/9/10 20:56
*/
@Getter
@Setter
@NoArgsConstructor
@Builder
@ToString
@EqualsAndHashCode
public class Employee {
private int id;
private String name;
private int age;
private double salary;
public Employee(int id) {
this.id = id;
System.out.println("Employee(int id) ");
}
public Employee(int id, String name) {
this.id = id;
this.name = name;
}
public Employee(int id, String name, int age, double salary) {
this.id = id;
this.name = name;
this.age = age;
this.salary = salary;
}
}