引用静态方法:类名称::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. [poj3349]Snowflake Snow Snowflakes_hash

    Snowflake Snow Snowflakes poj-3349 题目大意:给出n片雪花,每片雪花有6个角,每个角有一个权值.如果两片雪花中能够各选出一个点,使得从该点顺时针或者逆时针转,得到的权 ...

  2. Ubuntu安装Anaconda

    安装Anaconda的最简单方法是下载最新的Anaconda安装程序bash脚本,然后运行它. 在Anaconda Downloads页面找到最新版本的Anaconda for Python 3 .当 ...

  3. 真是没想到,ikvm.net居然停止开发了。

    看样子作者对.net已经失去了信心 http://weblog.ikvm.net/CommentView.aspx?guid=33ea525f-a291-418a-bd6a-abdf22d0662b# ...

  4. Django+xadmin打造在线教育平台(八)

    十一.用户信息 11.1.个人信息展示 (1)新建‘usercenter-bae.html’当母板 {% load staticfiles %} <!DOCTYPE html> <h ...

  5. 网络1712--c语言第二次作业总结

    1.作业亮点 1.1在调试问题方面有明显进步,变量声明方面有所改变,没有发现大面积抄袭现象. 1.2 以下几位同学博文写的较为优秀,可作为范例供大家参考 田亚琴--代码格式良好,思路清晰,调试部分图文 ...

  6. 学号:201621123032 《Java程序设计》第7周学习总结

    1:本周学习总结 1.1:思维导图:Java图形界面总结 2:书面作业 2.1: GUI中的事件处理 2.1.1: 写出事件处理模型中最重要的几个关键词 事件:如鼠标单击,滑动,输入汉字等. 事件源: ...

  7. 201621123031 《Java程序设计》第13周学习总结

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

  8. formidable 表单文件和数据提交

    只要涉及文件上传,那么form标签要加一个属性: <form action="http://127.0.0.1/dopost" method="post" ...

  9. 【iOS】Swift ?和 !(详解)

    Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值, 也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化 .如果在使用变量之前不进行初始化就会报错: [ ...

  10. Node入门教程(1)目录

    aicoder.com 全栈实习之简明 Node 入门文档 aicoder.com 线下实习: 不 8000 就业,不还实习费. 如果需要转载本文档,请联系老马,Q: 515154084 JS基础教程 ...