博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDK8新特性-方法引用
阅读量:7052 次
发布时间:2019-06-28

本文共 2000 字,大约阅读时间需要 6 分钟。

hot3.png

1. 概念


  • 方法引用就是给一个方法设置别名,相当于一个方法定义了不同的名字。

  • 方法引用在Java8中共定义了4中形式

    • 引用静态方法: 类名称::static方法名称
    • 引用某个对象的方法: 实例化对象::普通方法
    • 引用特定类的方法: 特定类::方法
    • 引用构造方法: 类名称::new

2. 引用静态方法


  • 在String类中有valueOf()方法
/** * 实现方法的引用接口 * @param 

引用方法的参数类型 * @param

引用方法的返回值类型 */@FunctionalInterfaceinterface IMessage3
{ R zhuanhuan(P p);}public class MethodReferenceDemo1 { public static void main(String... args) { // 将String.valueOf()方法变为了IMessage接口里的zhuanhuan()方法 IMessage3
msg = String :: valueOf; String str = msg.zhuanhuan(1000); System.out.println(str.replaceAll("0", "9")); }}

3. 普通方法引用


/** * 实现方法的引用接口 * @param 
引用方法的返回值类型 */@FunctionalInterfaceinterface IMessage3
{ R upper();}public class MethodReferenceDemo1 { public static void main(String... args) { IMessage3
msg = "hello" :: toUpperCase; String str = msg.upper(); System.out.println(str); }}

4. 特定类对象引用


  • 需要特定类的对象支持
  • String类中的compareTo
@FunctionalInterfaceinterface IMessage3

{ int compare(P p1, P p2);}public class MethodReferenceDemo1 { public static void main(String... args) { IMessage3

msg = String :: compareTo; System.out.println(msg.compare("A", "B")); }}

  • 与此前相比,方法引用前不需要定义对象,而是可以理解为将对象定义在了参数上

5. 引用构造方法


@FunctionalInterfaceinterface IMessage3
{ C create(String t, double p);}class Book { private String title; private double price; public Book(String title, double price) { this.title = title; this.price = price; } @Override public String toString() { return "书名: " + this.title + ", 价格: " + this.price; }}public class MethodReferenceDemo1 { public static void main(String... args) { IMessage3
msg = Book :: new; // 引用构造方法 Book book = msg.create("Java开发", 20.22); System.out.println(book.toString()); }}

转载于:https://my.oschina.net/shadowolf/blog/2994534

你可能感兴趣的文章
MSF目录结构
查看>>
RHEL下部署heartbeat,实现简单故障转移群集
查看>>
SQL如何分批次查询
查看>>
Swift可选值Optionals
查看>>
VMware Workstation Pro 調整硬盤空間(下)
查看>>
在线将Apache Rewrite伪静态规则自动转换为Nginx Rewrite
查看>>
Hibernate实现,使用UUID.主键的生成策略
查看>>
在工作中经常使用的git命令笔记
查看>>
Centos6.4安装mysql-5.5.33绿色版
查看>>
Java反射
查看>>
vmware安装 深度完美ghost winXP SP3 详细图文教程,强调一些重难点与技巧,模拟生产环境必备!...
查看>>
为什么我的日志文件不能继续记录呢
查看>>
如何安装CRX格式?Chrome插件离线安装,CRX格式安装方法 JSON-handle Chrome插件下载...
查看>>
使用Azure Function + Cognitive Services 实现图片自动化审核
查看>>
两种高性能 I/O 设计模式 Reactor 和 Proactor
查看>>
Redis进阶实践之九 独立封装的RedisClient客户端工具类
查看>>
Ubuntu启动问题以及Grub Rescue修复方法
查看>>
log4j日志通过flume写入HDFS
查看>>
scrapy爬虫实例
查看>>
haproxy代理配置
查看>>