引用静态方法:类名称::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. c语言最后一次作业

    1.当初你是如何做出选择计算机专业的决定的? 我再来到大学之前,通过查询和询问,了解到当前计算机行业就业需求量较高,同时我对计算机的几年过去比较高了,在高中时期就有过在大学学习计算机行业的知识与专业的 ...

  2. PTA常见错误

    1.最常犯的错误. 格式错误 在PTA程序检测中,输入输出要严格按照题目要求.输出的格式要完全按照题目要求来,该空格地方空格,该换行要换行.否则,就算你运行结果是对的,PTA还是提示你格式错误 比如下 ...

  3. 转:运行page页面时的事件执行顺序及页面的回发与否深度了解

    using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...

  4. 201621123062《java程序设计》第13周作业总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 思维导图: 2. 为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以被多 ...

  5. 敏捷冲刺每日报告一(Java-Team)

    第一天报告(10.25  周三) 团队:Java-Team 成员: 章辉宇(284) 吴政楠(286) 陈阳(PM:288) 韩华颂(142) 胡志权(143) github地址:https://gi ...

  6. 201621123040 《Java程序设计》第1周学习总结

    1.本周学习总结 关键词 JAVA概述 HelloWorld JDK JRE JVM JAVA基础语法 相关联系 通过一周的学习,我对JAVA有了初步的了解,JAVA是一种优秀的跨平台编写代码的应用平 ...

  7. 异步协程 的 trip库

    import trip headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, ...

  8. python实现京东秒杀

    # _*_coding:utf-8_*_ from selenium import webdriver import datetime import time driver = webdriver.C ...

  9. 原生ajax的请求函数

    ajax:一种请求数据的方式,不需要刷新整个页面:ajax的技术核心是 XMLHttpRequest 对象:ajax 请求过程:创建 XMLHttpRequest 对象.连接服务器.发送请求.接收响应 ...

  10. 从集合的无序性看待关系型数据库中的"序"

    本文目录:1.集合的特征2.集合的无序性3.表中记录的无序性4.集合的"序"和物理存储顺序之间的关系5.查询结果(虚拟表)的无序性.随机性6.为什么总是强调"无序&quo ...