引用静态方法
格式 : 类名::静态方法
范例 : Integer::parseInt
练习
集合中有以下数字,要求把他们都变成int类型
“1” “2” “3” “4” “5”
package Java_hm.ff;
import java.util.ArrayList;
import java.util.Collections;
import java.util.function.Function;
public class demo1 {
//方法引用 静态方法
public static void main(String[] args) {
//创建集合
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"1","2","3","4","5");
//常规方法
list.stream().map(new Function<String, Integer>() {
@Override
public Integer apply(String s) {
return Integer.parseInt(s);
}
}).forEach(s -> System.out.println(s));
//简化
list.stream().map(s -> Integer.parseInt(s)).forEach(k-> System.out.println(k));
//引用规则
/*1、方法需要已经存在
* 2、方法的参数和返回值与抽象方法的形参和返回值一样
* 2、方法发功能需要满足条件*/
list.stream().map(Integer::parseInt).forEach(s-> System.out.println(s));
}
}
引用成员方法
格式 : 对象::成员方法
1、其他类 : 其他类对象::方法名
2、本类 : this::方法名
3、父类 : super::方法名
练习1:
集合中有一些人的名字,按照要求过滤数据
练习2:
CUI界面中点击事件的方法引用写法
package Java_hm.ff;
import java.util.ArrayList;
import java.util.Collections;
import java.util.function.Predicate;
public class Demo2 extends FStringOperation{
// 应用成员方法
public void main(String[] args) {
//创建集合
ArrayList<String> list = new ArrayList<>();
//添加数据
Collections.addAll(list,"张三丰","赵构","张无忌","张蔷","周若蓝");
//过滤数据
list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length()==3).forEach(s-> System.out.println(s));
//改写方法引用
list.stream().filter(new Predicate<String>() {
@Override
public boolean test(String s) {
return s.startsWith("张")&&s.length()==3;
}
}).forEach(s-> System.out.println(s));
//其他类引用方法
list.stream().filter(new StringOperation()::stringJudge).forEach(s -> System.out.println(s));
//本类
list.stream().filter(Demo2::stringJudge1).forEach(s -> System.out.println(s));
//父类
list.stream().filter(super::stringJudge).forEach(s -> System.out.println(s));
}
public static boolean stringJudge1(String s){
return s.startsWith("张")&&s.length()==3;
}
}
class FStringOperation{
public boolean stringJudge(String s){
return s.startsWith("张")&&s.length()==3;
}
}
class StringOperation{
public boolean stringJudge(String s){
return s.startsWith("张")&&s.length()==3;
}
}