Upgrading to Java 8——第二章 Method References(方法引用)

概述

很多java 方法 会使用函数式接口作为参数。例如,java.util.Arrays类中的一个sort方法,就接受一个Comparator接口,它就是一个函数式接口,sort方法的签名如下:

public static T[] sort(T[] array, Comparator<? super T> comparator)

相对于传递一个Compartor的实例给sort方法,不如传递一个Lambda表达式。

进一步,我们可以传递一个方法引用来代替Lambda表达式,一个简单的方法引用就是一个类名或是实例名后面紧跟着::符号,最后面是方法名。

为什么想用方法引用?主要有两个原因:

  1.方法引用比Lambda表达式有更短的语义,因为方法引用不像Lambda表达式那样包含定义,方法引用的主体已经在别的地方定义了。

  2.实现代码复用。

你可以使用引用给静态方法,实例方法甚至构造方法,在java8 中使用心得标识符“::”,使类名/实例引用和方法名/构造方法名分开,类封装了引用实例但并没有函数式接口的实现。

方法引用的语法有下面几种定义:

ClassName::staticMethodName
ContainingType::instanceMethod
objectReference::methodName
ClassName::new

时间: 2024-10-11 02:59:10

Upgrading to Java 8——第二章 Method References(方法引用)的相关文章

java学习第二章总结

连续上了一个星期的课,也算慢慢适应了这种紧张的学习节奏.现在来总结下第二章所学的内容: 第二章主要是讲java的基础语法,他主要由这几个方面构成:常量,变量,数据类型,关键字,标识符,运算符,表达式,注释以及语句等构成. 数据类型是java控制内存的关键元素,java通过数据类型声明来对变量或者常量进行内存空间的分配,并将其标注好名称(即标识符).不同的数据类型,所分配的空间大小都不一样:整型中byte,short,int,long所对应的空间大小分别为1,2,4,8个字节:浮点型中float,

Java复习第二章

Java第二章 标识符由字母数字下划线和美元符号组成,长度不受限 : 第一个字符不是数字字符 : 不能是关键字 : 标志不能是 true false null:区分大小写 (中文可以作为变量名) java的基本数据类型有8种分别 为:booleam.byte.short.char.int.long.float.double 不赋值默认 是false或者0或者null(byte); 八进制在赋值数字前加0,十六进制加0x: 1 2 4 8 byte short int long:2 char ch

高效 告别996,开启java高效编程之门 2-15方法引用精讲

2-14课程和2-12重复了,所以没有发出来 1 方法引用使用条件 判断方法引用 是否满足场景的要求的时候,只需要看我们的出参和入参是否满足接口的要求即可 2 方法引用场景 四种方法引用类型: 指向静态方法 Class::staticMethod指向现有对象的实例方法 object::instanceMethod指向任意类型的实例方法 C1ass::instanceMethod指向构造方法 Class::new 3 方法引用demo package com.imooc.zhangxiaoxi.l

JAVA 入门第二章 (面对对象)

本渣渣鸽了一个月终于有时间更新.因为有c++基础,学起来这章还是比较简单的,本章我觉得是程序猿质变课程,理解面向对象的思想,掌握面向对象的基本原则以及 Java 面向对象编程基本实现原理,熟练使用封装.继承.多态面向对象三大特性,感受和c++之间的异同,下面是学习路线. 1.类和对象  1-1 什么是类和对象 1-2 如何定义 Java 中的类 1-3 如何使用 Java 中的对象 1-4 Java 中的成员变量和局部变量 1-5 Java 中的构造方法 1-6 Java 中的 static 使

LoadRunner + java脚本 第二章

问题:我们执行接口压力测试首先要生成测试URL,测试URL部分字段要进行MD5加密,如何生成这样的测试URL? 有两种方案进行如此测试: 1.使用java脚本生成一批加密后的测试URL,然后将这批数据放入Lr参数库中,编写c脚本进行调用 2.封装MD5加密等类,并将构建测试URL类一并打包,加载到LR-ClassPath中,这样就可以在LR中编写java脚本调用jar包自动生成测试URL了 备注:LR11中在controller跑c脚本支持10000用户,跑java脚本支持1000用户:LR12

深入理解java虚拟机-第二章

第2章 Java内存区域与内存溢出异常 运行数据区域 1.程序计数器(Program Counter Register) 是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器. 2.Java虚拟机栈(Stack)线程私有,每一个方法调用时都会创建一个栈帧(Stack Frame)用于存储局部变量表.操作数栈.动态链接.方法出口等信息.局部变量存放了编译期可知的各种基本数据类型(boolean,byte,char,short,int,float,long,double).对象引用(

&lt;&lt;深入Java虚拟机&gt;&gt;-第二章-Java内存区域-学习笔记

Java运行时内存区域 Java虚拟机在运行Java程序的时候会将它所管理的内存区域划分为多个不同的区域.每个区域都有自己的用途,创建以及销毁的时间.有的随着虚拟机的启动而存在,有的则是依赖用户线程来启动和销毁. 程序计数器 程序计数器是一块很小的区域,可以看做是用来表示线程所执行到字节码的某一行的行号指示器. 在Java虚拟机中,多线程是线程之间轮流切换并分配处理器的执行时间来实现的,为了线程切换之后能够继续回到之前的代码行继续执行,所以每个线程都有一个“线程私有”的程序计数器. 如果线程正在

Thinking in JAVA笔记——第二章 一切都是对象

2.1用引用操作对象 虽然一切皆对象,但实际上用的是对象的“引用”. 理解:引用可以理解为别名,引用“知道”对象实际的存放地址,并通过引用可以操作对象 2.2创建对象 new操作符 2.2.1 对象存储位置 1)寄存器:不能直接控制 2)堆栈:位于RAM,对象引用,基本类型存于堆栈 3)堆:位于RAM的动态存储区,存放所有的Java对象 4)常量存贮:代码内部或ROM中 5)非RAM存储:流对象和持久化对象 2.2.2特例:基本类型 置于堆栈中,具有包装器类,将基本类型转换为对象 高精度类Big

java基础第二章

一.变量 1.变量是内存中的一个标识符号,用于存储数据 2.变量命名规则--[P35页]    必须以字母.下划线 _ .美元符号 $ 开头 变量中,可以包括数字 变量中,不能出现特殊的符号,空格 java中的关键字(红色字体),不能做变量名 3.变量命名,遵循 骆驼命名法(变量由1个以上的单词组成,第1个单词首字母小写,后面单词的首字母大写) 二.数据类型 a)数字(整型int(整数).双精度浮点型double(小数)) b)字符型(char),存储单个字符 c)字符串型(String),存储