引用静态方法:类名称::static 方法名称;

引用某个对象的方法:对象::普通方法

引用特定类方法:特定类::方法

引用构造方法:类名称::new

范例:引用静态方法

package com.java.demo;
interface IMessage<P,R>{ // P表示方法的参数类型,R表示方法的返回值类型
public R change(P p);
}
public class TestDemo{
public static void main(String args[]){
/**
* 将基本数据类型转换成String类型:public static String valueOf();
* 下面语句表示,将String类中改的valueOf()方法传递给change()方法
*/
IMessage<Integer,String> msg = String :: valueOf;
String str = msg.change(100);
System.out.println(str.replaceAll("0","6"));
}
}

引用某个对象的方法

  

@FunctionalInterface //此处为函数式接口,只允许接口定义一个方法
package com.java.demo;
@FunctionalInterface //此处为函数式接口,只可以定义一个方法
interface IMessage<R>{ // P表示方法的参数类型,R表示方法的返回值类型
public R change();
}
public class TestDemo{
public static void main(String args[]){
/**
*String类的转大写方法:public String toUpperCase();
*""hello"为String类的匿名对象,传递该普通方法
*/
IMessage<String> msg = "hello" :: toUpperCase;
String str = msg.change();
System.out.println(str);//HELLO
}
}

引用特定类

package com.java.demo;

interface IMessage<R>{ // P表示方法的参数类型,R表示方法的返回值类型
public R change(String str1,String str2);
}
public class TestDemo{
public static void main(String args[]){
/**
*String类的转大写方法:public int compareTo(); 字符串比较,相等返回 0,小于返回<0;大约返回数字>0
*srt1.compareTo(str2);
*/
IMessage<Integer> msg = String :: compareTo; System.out.println(msg.change("java", "java"));//
}
}

引用构造方法

package com.java.demo;

interface IMessage<R>{ // P表示方法的参数类型,R表示方法的返回值类型
public R change(String title);
}
class Book{
private String title;
public Book(String title){
this.title = title;
}
@Override
public String toString() { return "书名:" +this.title;
}
}
public class TestDemo{
public static void main(String args[]){
IMessage<Book> msg =Book :: new;
//msg.change("java开发")返回的是Book类对象
System.out.println(msg.change("java开发"));
}
}

内建函数式接口:

  功能型接口:public Interface Function<T,R> ,定义的方法:public R appy(T t);接受参数也返回一个处理结果

  消费型接口:public Interface Consumer<T> ,定义方法 public void accept(T t);只接受参数不返回处理结果

  供给型接口:public Interface Supper<T> 定义反方法 :public T get();不接受参数只返回处理结果

  断言型接口:public Interface Predicate<T> 定义方法 public boolean test<T t> 接受参数返回boolean值

package com.java.demo;
import java.util.function.Function;
public class TestDemo{
public static void main(String args[]){
Function<String,Boolean> fun ="hello" :: equals;
System.out.println(fun.apply("hello"));
}
}

java中的方法引用的更多相关文章

  1. java中的方法引用(method reference)官方文档总结

    2017/7/5 转载写明出处:http://www.cnblogs.com/daren-lin/p/java-method-reference.html 今天要说的是java中的一项新特性,方法引用 ...

  2. Java8中的[方法引用]“双冒号”——走进Java Lambda(四)

    前面的章节我们提及到过双冒号运算符,双冒号运算就是Java中的[方法引用],[方法引用]的格式是 类名::方法名 注意是方法名哦,后面没有括号“()”哒.为啥不要括号,因为这样的是式子并不代表一定会调 ...

  3. Java 8 中的方法引用,轻松减少代码量,提升可读性!

    1. 引言 Java8中最受广大开发中喜欢的变化之一是因为引入了 lambda 表达式,因为这些表达式允许我们放弃匿名类,从而大大减少了样板代码,并提高了可读性. 方法引用是lambda表达式的一种特 ...

  4. Java中的方法应用

    一.如何定义java中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 语法: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 public.protected.priv ...

  5. Java中四种引用:强、软、弱、虚引用

    这篇文章非常棒:http://alinazh.blog.51cto.com/5459270/1276173 Java中四种引用:强.软.弱.虚引用 1.1.强引用当我们使用new 这个关键字创建对象时 ...

  6. 理解Java中的弱引用(Weak Reference)

    本篇文章尝试从What.Why.How这三个角度来探索Java中的弱引用,理解Java中弱引用的定义.基本使用场景和使用方法.由于个人水平有限,叙述中难免存在不准确或是不清晰的地方,希望大家可以指出, ...

  7. Swift编程语言中的方法引用

    由于Apple官方的<The Swift Programming Guide>对Swift编程语言中的方法引用介绍得不多,所以这里将更深入.详细地介绍Swift中的方法引用. Swift与 ...

  8. c#和java中的方法覆盖——virtual、override、new

    多态和覆盖 多态是面向对象编程中最为重要的概念之一,而覆盖又是体现多态最重要的方面.对于像c#和java这样的面向对象编程的语言来说,实现了在编译时只检查接口是否具备,而不需关心最终的实现,即最终的实 ...

  9. Java中的方法(形参及实参)return返回类型

    如何定义 Java 中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是: 其中: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 pub ...

随机推荐

  1. Java集合:HashMap源码剖析

    一.HashMap概述 HashMap基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了不同步和允许使用 null 之外,HashMap  ...

  2. grep -vFf 比较2个文件差异

    grep -vFf 1.txt 2.txt   打印出2.txt中与1.txt有差异的数据. #cat .txt 192.168.0.1 192.168.0.2 192.168.0.3 #cat .t ...

  3. 关于使用Mybatis的使用说明(一)【未完善待更新】

    (一)搭建Mybatis环境 (1)先导入常用的jar包:并且需要将lib文件夹下的包导入到项目中 (2)创建config文件夹,配置log4j.properties文件 # Global loggi ...

  4. IntelliJ IDEA的入门使用

    1 修改背景颜色 点击File,Settings 2 修改字体格式,以及字体大小 我个人习惯Eclipse的默认字体,所有把字体修改成Eclipse默认的Consolas 同上点击File,Setti ...

  5. Hibernate学习笔记一 使用idea开发工具搭建框架

    1.导包,包下载地址:http://hibernate.org/orm/downloads/ 2.创建数据库,准备表,实体.示例: CREATE TABLE `cst_customer` ( `cus ...

  6. Access数据库跨库查询及记录集区分

    医疗设备软件一般都是单机软件,如果是Windows平台,常会选择Access数据库存储结构化数据,因为他轻量,便于部署.然而随着医疗信息化的发展,医生希望对多台单机设备的数据进行管理,采用网络数据库当 ...

  7. IT & ME

    第一部分:结缘计算机 填报志愿的那天晚上,老爸老妈和我一起在房间里讨论专业选择的事情.因为我性格比较内敛,家人建议我去学医.而我又对学医一点也不感冒,再加上自己高中时期一直喜欢玩游戏,于是最后就填报了 ...

  8. 201621123031 《Java程序设计》第3周学习总结

    Week03-面向对象入门 1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系 ...

  9. Hibernate之深入持久化对象

    Hibernate是一个彻底的O/R Mapping 框架.之所以说彻底,是因为相对于其他的 框架 ,如Spring JDBC,iBatis 需要手动的管理SQL语句,Hibernate采用了完全 面 ...

  10. bzoj千题计划177:bzoj1858: [Scoi2010]序列操作

    http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...