方法的引用
方式一:
public class TestMethodRef1 {
public static void main(String[] args) {
//使用匿名内部类实现
Consumer consumer = new Consumer<Integer>() {
@Override
public void accept(Integer i) {
System.out.println(i);
}
};
consumer.accept(56);
//使用lambda表达式实现
Consumer<Integer> consumer1 = (i)->System.out.println(i);
consumer1.accept(56);
//使用方法引用
//println()的参数类型、返回值类型正好和accept方法的参数类型、返回值类型相同
Consumer<Integer> consumer2 = System.out::println;
consumer2.accept(56);
}
}
方式二:
public class TestMethodRef2 {
public static void main(String[] args) {
Student stu = new Student(10,"zhangsan",23,100);
//使用匿名内部类实现
Supplier<String> supplier1= new Supplier<String>(){
public String get() {
return stu.getName();
}
};
System.out.println(supplier1.get());
//使用Lambda表达式实现
Supplier<String> supplier2 = ()-> stu.getName();
System.out.println(supplier2.get());
//使用方法引用实现
Supplier<String> supplier3 = stu::getName;
System.out.println(supplier3.get());
}
}
方式三:
public class TestMethodRef3 {
public static void main(String[] args) {
//使用匿名内部类实现
Comparator comparator1 = new Comparator<Integer>() {
public int compare(Integer in1, Integer in2) {
//return in1.intValue()-in2.intValue();
return Integer.compare(in1,in2);
}
};
System.out.println(comparator1.compare(12,34));
//使用Lambda表达式实现
Comparator<Integer> comparator2 = (in1,in2)->{ return Integer.compare(in1,in2);};
System.out.println(comparator2.compare(12,34));
//使用方法引用实现
Comparator<Integer> comparator3 =Integer::compare;
System.out.println(comparator3.compare(12,34));
}
}