java8-lamda表达式方法和引用

上传人:H*** 文档编号:813157 上传时间:2017-05-15 格式:PDF 页数:5 大小:716.24KB
返回 下载 相关 举报
java8-lamda表达式方法和引用_第1页
第1页 / 共5页
java8-lamda表达式方法和引用_第2页
第2页 / 共5页
java8-lamda表达式方法和引用_第3页
第3页 / 共5页
java8-lamda表达式方法和引用_第4页
第4页 / 共5页
java8-lamda表达式方法和引用_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《java8-lamda表达式方法和引用》由会员分享,可在线阅读,更多相关《java8-lamda表达式方法和引用(5页珍藏版)》请在金锄头文库上搜索。

1、Java8新特性之 lamda表达式方法的引用 1. 基本概念 方法引用是 Java 8之后增加的一个新功能,可以理解为复制版的 Lamda表达式 方法的引用主要有以下几种形式 : 1、类之中静态方法的引用; 2、类之中普通方法的引用; 3、类之中构造方法的引用; 4、特定类型的任意方法的引用。 (我也搞的不是很懂) 2. 基本操作 所谓的方法引用实际上指的是将一个特定类的方法功能映射过来,而后通过接口中的方法,利用 lamda表达式实现方法体的定义,当然这种定义的形式一共分为四种: 类中静态方法的引用: 类名称 : 静态方法名称 ; 类中普通方法的引用: 实例化对象名称 : 普通方法 ; 类

2、之中构造方法的引用: 类名称 : new; 特定类型的任意方法引用: 类名称 : 方法名称 。 先观察以下代码 ,熟悉对方法的引用 package com.jbit.test; /* * 测试 lamda函数对构造方法的引用 * 效果:调用函数接口的抽象方法时,实际上是执行的引用方法体的内容 * 引用方式: 类名称 : */ /定义一个面向函数的接口 FunctionalInterface interface Message public void print(); /定义跟 Message接口并无任何关联的类 class Book public Book() /定义类的构造方法没有参数并且没

3、有返回值 System.out.println(学 IT找工作,就选北大青鸟 ); public class TestDemo public static void main(String args) /利用 lamda表达式的方法引用,使用 :将 Book的构造方法引用到 print抽象方法 Message message = Book : new; message.print();/此时调用的是 Book类构造方法的方法体。 发现这个时候使用 Lamda 表达式定义的任何的抽象操作,都可以引用与之结构完全无关的操作,因为要的只是方法体,调用接口的抽象方法时,实际上执行的是引用的方法体内容。

4、下面依次来看看各种的方法引用形式。 引用静态方法 : 在 String类里面定义了许多的方法: public static String valueOf(int i),引用此方法。此时定义的接口就需要设置输入值以及返回值,那么为了让接口更加适合于各种方法,使用泛型。 package com.jbit.test; /* * 测试 lamda表达式对静态方法的引用 */ FunctionalInterface /* * ClassName: Message1 * Description: TODO 定义一个函数接口 * author ZhengJiangShan * date 2016年 3月 2

5、6日 下午 9:16:02 * param * 抽象方法的参数 * param * 抽象方法的返回值 */ interface Message1 public R getInfo(P p); public class TestDemo1 public static void main(String args) / 测试 lamda表达式对静态方法的引用 / 在这里引用 JDK中的 java.lang.String类的 public static valueOf(int i)静态方法 Message1 message1 = String:valueOf; / 使用函数接口引用 String类的

6、valusOf方法体 String result = message1.getInfo(1000); / 调用函数接口的抽象方法发现执行的是 String类中的 valueOf方法 System.out.println(result); System.out.println(result.length(); 引用普通方法 : package com.jbit.test; /* * 测试 lamda对普通方法的引用 */ /* * * ClassName: Message2 * Description: TODO 定义一个函数接口 * author ZhengJiangShan * date 2

7、016年 3月 26日 下午 9:26:07 * * param * 方法的参数泛型 */ interface Message2 public R getInfo(P p); /* * ClassName: NoramlClass * Description: TODO 定义一个普通的类 * author ZhengJiangShan * date 2016年 3月 26日 下午 9:29:01 */ class NoramalClass /* * Title: MatchString * Description: TODO 定义一个普通的方法 * param param * str 普通方法

8、执行需要传递进来的参数 * return boolean 匹配字符串的结果 */ public String MatchString(String str) return str; /* * ClassName: TestDemo2 * Description: TODO 测试 lamda对普通方法的映射调用 * author ZhengJiangShan * date 2016年 3月 26日 下午 9:33:48 */ public class TestDemo2 public static void main(String args) / 测试 lamda调用普通方法 Message2

9、message2 = new NoramalClass():MatchString; / 调用接口的抽象方法 String result = message2.getInfo(jbit); System.out.println(result); 在进行方法引用的时候还可以针对于特定的类型实现方法引用 带参数的构造方法的引用 : package com.jbit.test; /* * 测试 lamda对有参数构造方法的引用 */ /* * ClassName: Person * Description: TODO 定义一个普通的类 * author ZhengJiangShan * date 2

10、016年 3月 26日 下午 10:02:55 */ class Person private String name; private int age; public Person(String name, int age) this.name = name; this.age = age; Override public String toString() return name + 已经 + age + 岁了 ; FunctionalInterface /* * ClassName: Message3 * Description: TODO 定义函数接口, * 唯一的抽象方法的返回值类型

11、 * 继承将要引用的构造方法的类 * author ZhengJiangShan * date 2016年 3月 26日 下午 10:09:24 * param */ interface Message3 public R getInfo(String name, int age); public class TestDemo3 public static void main(String args) / 使用 lamda对带参数的构造方法进行 Message3 message3 = Person:new; / 调用 System.out.println(message3.getInfo(郑江山 , 30); ; 对于整个方法的引用,建议掌握静态方法(类 : static 方法)、普通方法(实例化对象 : 方法)、构造方法(类 : new)的三种引用操作。例如,日后如果见到:“ System.out : println”,针对的是 System.out.println()方法的引用。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号