当前位置: 首页 > news >正文

java记录-lambda表达式、接口应用、方法引用

基本形式

(str)->{System.out.println(str)
};

调用作为参数的接口实例的方法

1、用一个类实现接口,然后使用该类实例调用方法
2、匿名内部类
3、在 接口(不能是抽象类) 有且只有一个抽象方法时,可以使用lamda表达式来重写这个方法,JAVA会自动生成一个对应的匿名实现类
ps.有且只有一个抽象方法的接口称为函数式接口
参数类型可以省略,JVM会自己去接口里根据方法声明确定类型

public class Main {public static void main(String[] args) throws IOException {useEatable((how)->{System.out.println(how);return true;});}private static void useEatable(Eatable e){boolean success = e.eat("我吃了很多");System.out.println(success);}
}interface Eatable{public boolean eat(String how);
}

也可以直接用lambda表达式直接造一个匿名的接口实现类的实例

Eatable e = (how)->{System.out.println(how);return true;
};

lambda表达式和匿名内部类的区别

  1. 匿名内部类可以作为具体类、抽象类或接口的子类实例
  2. lambda表达式只能做接口的匿名实现类实例
  3. 函数式接口可以使用lambda表达式或匿名内部类,如果有多个抽象方法只能用匿名内部类

方法引用

函数式接口的匿名实现非要用lambda表达式或者匿名内部类吗?它们真的很冗余
如果有已经存在的方法可以实现重写方法的功能时,可以直接用方法引用

方法引用符 ::

useEatable(s->System.out.println(s));
简化成
useEatable(System.out::println);
jvm把引用当方法实现作为重写方法的实现并且创建一个匿名的函数式接口实现类实例,参数信息它自己推导

引用类静态方法

Integer::parseInt

引用特定对象的方法

"Hello World"::toUpperCase

引用类的任意对象的方法

useMyString((s,start,end)->s.substring(x,y));
等同于
useMyString(String::substring);
lambda表达式的第一个参数视为调用方法的实例,后面的参数都是输入方法的参数

引用构造器

String::new
http://www.lryc.cn/news/61032.html

相关文章:

  • AI写作机器人-ai文章生成器在线
  • HarmonyOS原子化服务卡片整改、下架、升级失败部分原因及处理办法
  • 博客系统测试报告【可上线】
  • shell中的for循环和if判断
  • 【Unity入门】16.脚本引用组件
  • 无线蓝牙耳机哪款音质好?目前音质最好的无线蓝牙耳机推荐
  • 【云原生进阶之容器】第六章容器网络6.6.1--Cilium网络方案概述
  • 集中式版本控制工具 —— SVN
  • 【Dom获取属性操作】JavaScript 全栈体系(十)
  • C# 中的多态和虚方法,如何实现多态和使用虚方法?
  • R软件使用一些常见的问题
  • 为什么需要uboot?
  • Qt布局实战:实现高效、美观的GUI应用程序
  • 推荐几款项目管理工具,提高你的团队协作效率
  • SQL101 检索每个顾客的名称和所有的订单号(一)
  • mac压缩文件多了__MACOSX目录问题
  • 1.17 从0开始学习Unity游戏开发--场景切换
  • 【golang学习笔记】——(五)Go格式化统一代码风格
  • CAD转SHP最好的方法 赶快收藏起来吧
  • PyQt PyQt5 Python VTK Gui Actor 选中 高亮显示 actor
  • TCP和UDP通信对比
  • SpringCloud:ElasticSearch之自动补全
  • TOOM解析如何搭建一套适合自己的舆情监测系统?完整的实战指南
  • 技术分享 | OceanBase 手滑误删了数据文件怎么办
  • windows上Git Bash支持常用命令gcc tree zip wget cmake ninja
  • 面试题30天打卡-day10
  • 【python】制作一个简单的界面,有手就行的界面~
  • 基于RK3568的Linux驱动开发—— GPIO知识点(二)
  • item_get-获得aliexpress商品详情API的调用参数说明
  • 【Python_Scrapy学习笔记(三)】Scrapy框架之全局配置文件settings.py详解