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. maven仓库之第二篇

    1. 什么是maven? 它是一个软件开发的管理工具,主要管理的工作是:依赖管理,项目构建. 2. 使用maven的好处? 能够集中管理jar包,提供一键构建. 3. maven的安装及配置 配置:M ...

  2. [转]UiPath实践经验总结(二)

    本文转自:https://www.cnblogs.com/ybyebo/p/10086473.html 1.       UI操作容易受到各种意外的干扰,因此应该缩短UI操作阶段的总体时间.而为了缩短 ...

  3. 转战物联网·基础篇06-深入理解MQTT协议之基本术语

      通过上一节我们对MQTT协议已经有了初步的印象,这一节我们开始深入的理解一下MQTT协议,介绍常用的MQTT 3.1.1版本,5.0版本后面指介绍新增部分即可.这一节我们先介绍MQTT里常用的术语 ...

  4. fork函数的一些小结

    今天遇到一个这样的问题,假设父进程有一个变量S,fork后,子进程中的变量S地址是否和父进程中的变量S 是相同的? 再学操作系统的时候,知道fork是采用的写时复制,所以如果子进程或者父进程不对变量S ...

  5. 安装pymssql

    直接安装失败 https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql 去下载对应的 pymssql   whl版本 之后 pip install whe ...

  6. 0day2安全——笔记2

    第二章 内存的不同用途 windows应用—>编译连接—>PE文件—>进程 进程使用的内存 1.代码区:储存着被装入执行的二进制机器代码,处理器会到这个区域取指和执行 2.数据区:用 ...

  7. 201871010131-张兴盼《面向对象程序设计(java)》第一周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://edu.cnblogs.com/campus/xbsf/ ...

  8. C++ 的 +,加号重载示例

    #include <iostream> // overloading "operator + " // 要考虑加法的形式 // a+1 // a+a // 1+a // ...

  9. 剑指Offer-33.第一个只出现一次的字符(C++/Java)

    题目: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 分析: 遍历字符串,利用Ha ...

  10. 详解C++ STL map 容器

    详解C++ STL map 容器 本篇随笔简单讲解一下\(C++STL\)中的\(map\)容器的使用方法和使用技巧. map容器的概念 \(map\)的英语释义是"地图",但\( ...