JAVA8 方法引用:(四种方法引用的使用)

  对象引用的特点:不同的对象可以操作同一块的内容;而方法引用就是指为一个方法设置别名,相当于一个方法定义了不同的名字。

引用静态方法:

  类名称 ::  static 方法名称

引用某个对象的方法:

  实例化对象 :: 普通方法

引用特定类型的方法:

  特定类 :: 普通方法

引用构造方法:

  类名称 :: new

引用静态方法:【在String类中有一个valueOf()方法;】?

/**
* 实现方法的引用接口
* @param<P> 引用方法参数的类型
* @param<R> 引用方法返回的类型
*/
interface IMessage<P,R> {
public R zhuanhuan(P p) ;
} public class TestDemo {
public static void main(String [] args) {
//即:将String(类).valueOf()方法变为了IMessage接口里的zhuanhuan()方法
IMessage<Integer,String> msg = String :: valueOf;
String str = msg.zhuanhuan(1000) ;
System.out.println(str.replaceAll("0","9"));
}
}

普通方法引用:

/**
* 实现方法的引用接口
* @param<R> 引用方法返回的类型
*/
interface IMessage<R> {
public R upper() ;
} public class TestDemo {
public static void main(String [] args) {
// String类的toUpperCase()方法的目的是将实例化对象调用该方法
// 本代码中,将toUpperCase()函数的应用交给了IMessage接口的upper方法
IMessage<String> msg = "Hello" :: toUpperCase;
String str = msg.upper() ; // 相当于调用 "Hello".toUpperCase()
System.out.println(str);
}
}

  【如果要实现函数的引用,那么必须要有接口,并且接口中有且只有一个抽象方法】

 >>> 如果函数引用的接口有多个抽象方法则为不合规则,这时需要引用一个注解,说明该接口为函数式接口(函数引用): @FunctionalInterface

  

  在进行方法引用的时候,还有另外的一种形式的引用:(需要特定类的对象支持)

…………………………

引用构造方法:

interface IMessage<C> {
public 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 + '\t' + this.price ;
}
} public class TestDemo {
public static void main(String [] args) {
IMessage<Book> msg = Book :: new ; //引用Book类中的构造方法
// 调用的create实际上是调用的Book.Book()构造方法
Book book = msg.create("Java Fail",12.2) ;
System.out.println(book);
}
}

  对象的引用是使用不同的名字,而方法引用是需要有一个函数式的接口并且设置号参数。


推荐学习:https://www.cnblogs.com/xiaoxi/p/7099667.html

Java 方法引用_特性的更多相关文章

  1. Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针

    Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针   1.1. java方法引用(Method References) 与c#委托与脚本语言js ...

  2. java 对象的this使用 java方法中参数传递特性 方法的递归

    一.this关键字,使用的情形,以及如何使用. 1.使用的情形 类中的方法体中使用this  --初始化该对象 类的构造器中使用this --引用,调用该方法的对象 2.不写this,调用 只要方法或 ...

  3. 方法引用_通过this引用本类的成员方法和方法引用_类的构造器(构造方法)引用和数组的构造器引用

    package com.yang.Test.ThisMethodReference; /** * 通过this引用本类的成员方法 */ public class Husband { //定义一个买房子 ...

  4. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_7方法引用_数组的构造器引用

    先创建函数式接口 创建测试类 打印长度是10...... 方法引用优化

  5. java 方法引用(method reference)

    it -> it != null等价于Objects::nonNull

  6. 乐字节-Java8新特性之方法引用

    上一篇小乐介绍了<Java8新特性-函数式接口>,大家可以点击回顾.这篇文章将接着介绍Java8新特性之方法引用. Java8 中引入方法引用新特性,用于简化应用对象方法的调用, 方法引用 ...

  7. 乐字节Java8核心特性之方法引用

    大家好,我是乐字节的小乐,上一次我们说到了Java8核心特性之函数式接口,接下来我们继续了解Java8又一核心特性--方法引用. Java8 中引入方法引用新特性,用于简化应用对象方法的调用, 方法引 ...

  8. Java笔记——Java8特性之Lambda、方法引用和Streams

    Java8已经推出了好一段时间了,而掌握Java8的新特性也是必要的,如果要进行Spring开发,那么可以发现Spring的官网已经全部使用Java8来编写示例代码了,所以,不学就看不懂. 这里涉及三 ...

  9. Java 8新特性-4 方法引用

    对于引用来说我们一般都是用在对象,而对象引用的特点是:不同的引用对象可以操作同一块内容! Java 8的方法引用定义了四种格式: 引用静态方法     ClassName :: staticMetho ...

随机推荐

  1. 【ZJOI 2014】力

    Problem Description 给出 \(n\) 个数 \(q_i\),给出 \(F_j\) 的定义如下: \[F_j=\sum_{i<j} \frac{q_iq_j}{(i-j)^2} ...

  2. JQuery 获取元素到浏览器可视窗口边缘的距离

    获取元素到浏览器可视窗口边缘的距离 by:授客 QQ:1033553122 1.   测试环境 JQuery-3.2.1.min.js 下载地址: https://gitee.com/ishouke/ ...

  3. [browser srceen]、很多未知望大神告知、简单写了个拖拽

    未知作用的有.如果也有像我1样好奇的小伙伴了解了麻烦告知 // console.log(window.screen.availWidth);//未知效果 // console.log(window.s ...

  4. HTML元素分类 块级元素 内联元素 块级内联元素

    概述 HTML中存在许多元素,如<h1>,<p>,<a>,<block>,<image>,这些元素可分为三类,依次是块级元素,内联元素,块级 ...

  5. css字体标签相关

    斜体: i:斜体em:斜体,强调的意思,有特殊含义,尽量用i或者cssfont-style:字体风格 normal默认值,italic斜体,oblique倾斜的字体 粗体: b,strong:粗体fo ...

  6. Playbook剧本小结

    1.Playbook剧本小结 1.什么是playbook,playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色task: 定义的是具体执 ...

  7. Linux系统学习 一、安装,调试

    环境 主机: Windows 10 虚拟机: VMware 15 Pro 镜像: 一.安装过程: 然后开启虚拟机 设置主机名 时区 密码 最小安装 等着 重启 登录 二.配置静态IP地址 输入ifco ...

  8. Docker启动守护式容器

    目录 启动守护式容器 查看容器日志 docker后台运行 查看容器内运行的进程 ​查看容器内部细节 进入正在运行的容器并以命令行交互 重新进入 上述两个区别 从容器内拷贝文件到主机上 启动守护式容器 ...

  9. Python添加邮件附件并通过邮件发送测试报告

    import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText c ...

  10. Python 获 Mozilla 和扎克伯格夫妇 40 余万美金资助

    Python 软件基金会近日发文宣布,收到来自 Mozilla Corporation 和 Chan Zuckerberg Initiative(CZI)的资金赞助,共计 407,000 美元.这笔款 ...