Java8中怎么实现函数入参
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,今天就跟大家聊聊有关Java8中怎么实现函数入参,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 前情回顾Java8支持将函数作为参数传递到
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
在关系数据库中定义的逻辑结构
东尊网络安全视频
松原市社保局网络安全等级
软件开发就业待遇
北京邮电网络技术研究生院
服务器并发图
汽车网络技术的优点是什么
捕鱼软件开发公司番禺
必应翻译软件开发
数据库怎么查看表中的字段长度
会计中软件开发等是什么明细
deltaV数据库配置
软件开发者的岗位说明
网络安全交易不应该
温州三线服务器
怎么样做er图数据库
网络安全教育周会总结
华软本科网络技术专业
小皮面板打开数据库
武汉软件开发培训哪个好
2个g的数据库文件
如何履行网络安全监督管理
电子板报网络安全素材
数据库系统最小
淮北服务器租用公司
宿迁网络安全知识竞赛题库
对峙二中国服务器是哪个地方
微信小程序请求服务器
关于手机网络安全问题
腾讯云服务器4核8g性能