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. 微信小程序之左右布局

    本文以一个简单的小例子,简述在微信小程序开发中左右布局功能的实现方式,主要涉及scroll-view ,列表数据绑定,及简单样式等内容,仅供学习分享使用. 概述 在微信小程序开发中,左右分栏(左边显示 ...

  2. ASP.NET是什么?

    ASP.NET简介 简单来说,ASP.NET 是一个使用 HTML.CSS.JavaScript 和服务器脚本创建网页和网站的开发框架. 微软在2001年开发的第一个版本的ASP.NET,是一种建立在 ...

  3. ES6新语法(一)

    1.常量         ES5没有定义声明常量的方式,ES6标准中引入了新的关键字const来定义常量.         常量必须给初始值: 常量不能在同一作用域内重新定义或赋值:  <scr ...

  4. PHP中RBAC权限管理

    1.RBAC概念和原理          RBAC:全称叫做Role-Based Access Control,中文翻译叫做基于角色的访问控制.其主要的作用是实现项目的权限控制.            ...

  5. zabbix 分布式监控及优化

    1..zabbix分布式监控,模拟多机房实现监控? 1.有多机房时,需要用到proxy 1.网络不通 2.网络延迟 2.当监控的主机较多时,也可以用proxy来缓解压力 1.安装proxy [root ...

  6. 剑指offer笔记面试题11----旋转数组的最小数字

    题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5 ...

  7. Java的三种代理模式&完整源码分析

    Java的三种代理模式&完整源码分析 参考资料: 博客园-Java的三种代理模式 简书-JDK动态代理-超详细源码分析 [博客园-WeakCache缓存的实现机制](https://www.c ...

  8. Putty 连接centOS7 超时问题

    方法1: #vim /etc/ssh/sshd_config(添加或修改以下配置) ClientAliveInterval 60(每隔60秒给SSH客户端发送一次信号)   ClientAliveCo ...

  9. java8-06-四大函数式接口

    在使用lamdba表达式需要函数式接口的支持    java8已经提供了很多函数式接口   在java.util.function包下 

  10. 预览本地图片原生js

    <!-- 样似总结: 用a标签代替file,做文件上传. 将file进行绝对定位,透明度设置为0:宽度为“上传图片”的宽度,超出部分隐藏. 这样做是为了将file隐藏起来.用a标签代替file ...