Java8中怎么实现函数入参
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天就跟大家聊聊有关Java8中怎么实现函数入参,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 前情回顾Java8支持将函数作为参数传递到
千家信息网最后更新 2026年11月03日Java8中怎么实现函数入参
今天就跟大家聊聊有关Java8中怎么实现函数入参,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
1. 前情回顾
Java8支持将函数作为参数传递到另一个函数内部,在第一篇学习笔记中也简单提到了这个用法。但是在第一篇学习的时候,还是困惑的,先说下我的困惑。
在第一篇中提到函数入参,入参的类型要先定义一个接口:
public interface Predicate{ boolean test(T t);}
然后定义一个函数如下:
public static ListfilterApples(List inventory,Predicate predicate){ List result = new ArrayList<>(); for(Apple apple:inventory){ if(predicate.test(apple)){ result.add(apple); } } return result;}
最后调用该方法:
ListfilterGreenApples= filterApples(originApples,Apple::isGreenApple);
这里问题就来了,入参类型是一个接口Predicate,那实际入参不应该是这个接口的实现类的对象吗,为什么直接就传了这个静态方法呢?
带着这个问题,开始再继续学习一下函数入参这块内容。
2. 继续学习
要理清函数作为参数传递这块内容,还得先从最简单的实现看起。在学习设计模式的时候,有了解过策略模式。第一个文章苹果那个demo为例,加上策略模式。
首先定义一个接口,后面实现的所有策略都基于该接口:
public interface ApplePredicate{ boolean test(T t);}
接着实现两个筛选苹果的策略:一个是根据颜色进行筛选,另一个是根据重量进行筛选:
public class filterAppleByColorPredicate implements Predicate{ @Override public boolean test(Apple apple) { return "green".equals(apple.getColor()); }}public class filterAppleByWeightPredicate implements Predicate { @Override public boolean test(Apple apple) { return apple.getWeight() > 15; }}
最后main方法实现如下:
public static void main(String[] args){ List inventory = ...; // 选择根据颜色过滤的策略过滤 ApplePredicate colorPredicate = new filterAppleByColorPredicate(); filterApples(inventory,colorPredicate); // 选择根据重量过滤的策略过滤 ApplePredicate weightPredicate = new filterAppleByWeightPredicate(); filterApples(inventory,weightPredicate); }public static List filterApples(List inventory,ApplePredicate predicate){ List result = new ArrayList<>(); for(Apple apple:inventory){ if(predicate.test(apple)){ result.add(apple); } } return result;} 这样就实现了一个基于策略模式的代码。
3. 匿名类
在第二小节的基础上,直接使用匿名类,省去了各种策略的实现类的定义:
filterApples(inventory,new ApplePredicate() { public boolean test(Apple apple){ return "green".equals(apple.getColor()); }});
4. Lambda表达式
第三小节使用匿名类,但是当代码量多了以后,还是显得累赘,为此引入Lambda表达式来简化编写:
filterApples(inventory,(Apple apple) -> "green".equals(apple.getColor()));
关于Lambda这里我还是有疑问的,假如接口定义了两个方法:
public interface ApplePredicate{ boolean test(T t); boolean test2(T t);}
看完上述内容,你们对Java8中怎么实现函数入参有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
函数
策略
接口
内容
学习
方法
模式
还是
困惑
两个
代码
参数
小节
时候
类型
苹果
表达式
重量
问题
颜色
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网佳科技有限公司
互联网科技与金融科技
深圳互联网络科技有限公司
紫鲸互联网科技
迪茉互联网科技
互联网科技论文
互联网金融科技委员会
多迪互联网科技有限公司
四个字互联网科技公司取名
老年人脱离互联网科技的作文
移动互联网科技公司
宜昌元轩互联网科技有限公司
996高科技互联网公司
西安小鹰速贷互联网科技有限公司
小米互联网科技园入驻
四川互联网展示科技馆设计
西安左小互联网科技有限公司
玉溪新华互联网科技怎么选
盐城市攀科互联网科技有限公司
每日互联网科技新闻
互联网和科技技术
中国互联网科技股
以房互联网科技
互联网科技博客
互联网之后的科技是什么
互联网科技和法律行业
上海京穆互联网科技有限公司
互联网第三次科技革命特征
广州燕处互联网科技有限公司
福建互联网展示科技馆设计