Java 方法引用_特性
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 方法引用_特性的更多相关文章
- Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针
Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针 1.1. java方法引用(Method References) 与c#委托与脚本语言js ...
- java 对象的this使用 java方法中参数传递特性 方法的递归
一.this关键字,使用的情形,以及如何使用. 1.使用的情形 类中的方法体中使用this --初始化该对象 类的构造器中使用this --引用,调用该方法的对象 2.不写this,调用 只要方法或 ...
- 方法引用_通过this引用本类的成员方法和方法引用_类的构造器(构造方法)引用和数组的构造器引用
package com.yang.Test.ThisMethodReference; /** * 通过this引用本类的成员方法 */ public class Husband { //定义一个买房子 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_7方法引用_数组的构造器引用
先创建函数式接口 创建测试类 打印长度是10...... 方法引用优化
- java 方法引用(method reference)
it -> it != null等价于Objects::nonNull
- 乐字节-Java8新特性之方法引用
上一篇小乐介绍了<Java8新特性-函数式接口>,大家可以点击回顾.这篇文章将接着介绍Java8新特性之方法引用. Java8 中引入方法引用新特性,用于简化应用对象方法的调用, 方法引用 ...
- 乐字节Java8核心特性之方法引用
大家好,我是乐字节的小乐,上一次我们说到了Java8核心特性之函数式接口,接下来我们继续了解Java8又一核心特性--方法引用. Java8 中引入方法引用新特性,用于简化应用对象方法的调用, 方法引 ...
- Java笔记——Java8特性之Lambda、方法引用和Streams
Java8已经推出了好一段时间了,而掌握Java8的新特性也是必要的,如果要进行Spring开发,那么可以发现Spring的官网已经全部使用Java8来编写示例代码了,所以,不学就看不懂. 这里涉及三 ...
- Java 8新特性-4 方法引用
对于引用来说我们一般都是用在对象,而对象引用的特点是:不同的引用对象可以操作同一块内容! Java 8的方法引用定义了四种格式: 引用静态方法 ClassName :: staticMetho ...
随机推荐
- maven仓库之第二篇
1. 什么是maven? 它是一个软件开发的管理工具,主要管理的工作是:依赖管理,项目构建. 2. 使用maven的好处? 能够集中管理jar包,提供一键构建. 3. maven的安装及配置 配置:M ...
- [转]UiPath实践经验总结(二)
本文转自:https://www.cnblogs.com/ybyebo/p/10086473.html 1. UI操作容易受到各种意外的干扰,因此应该缩短UI操作阶段的总体时间.而为了缩短 ...
- 转战物联网·基础篇06-深入理解MQTT协议之基本术语
通过上一节我们对MQTT协议已经有了初步的印象,这一节我们开始深入的理解一下MQTT协议,介绍常用的MQTT 3.1.1版本,5.0版本后面指介绍新增部分即可.这一节我们先介绍MQTT里常用的术语 ...
- fork函数的一些小结
今天遇到一个这样的问题,假设父进程有一个变量S,fork后,子进程中的变量S地址是否和父进程中的变量S 是相同的? 再学操作系统的时候,知道fork是采用的写时复制,所以如果子进程或者父进程不对变量S ...
- 安装pymssql
直接安装失败 https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql 去下载对应的 pymssql whl版本 之后 pip install whe ...
- 0day2安全——笔记2
第二章 内存的不同用途 windows应用—>编译连接—>PE文件—>进程 进程使用的内存 1.代码区:储存着被装入执行的二进制机器代码,处理器会到这个区域取指和执行 2.数据区:用 ...
- 201871010131-张兴盼《面向对象程序设计(java)》第一周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://edu.cnblogs.com/campus/xbsf/ ...
- C++ 的 +,加号重载示例
#include <iostream> // overloading "operator + " // 要考虑加法的形式 // a+1 // a+a // 1+a // ...
- 剑指Offer-33.第一个只出现一次的字符(C++/Java)
题目: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 分析: 遍历字符串,利用Ha ...
- 详解C++ STL map 容器
详解C++ STL map 容器 本篇随笔简单讲解一下\(C++STL\)中的\(map\)容器的使用方法和使用技巧. map容器的概念 \(map\)的英语释义是"地图",但\( ...