java中的双与_java 双冒号是什么操作符?

双冒号::在JDK8的Lambda表达式函数中开始使用,用作方法引用。

具体用法,咱们来举个例子:

假设有个Person类:

public class Person {

public enum Sex {

MALE, FEMALE

}

String name;

LocalDate birthday;

Sex gender;

String emailAddress;

public int getAge() {

// ...

}

public Calendar getBirthday() {

return birthday;

}

public static int compareByAge(Person a, Person b) {

return a.birthday.compareTo(b.birthday);

}}

假设某个社交网络APP包含成员的个人信息,你想根据年龄age来排序:

Person[] rosterAsArray = roster.toArray(new Person[roster.size()]);

class PersonAgeComparator implements Comparator {

public int compare(Person a, Person b) {

return a.getBirthday().compareTo(b.getBirthday());

}

}

Arrays.sort(rosterAsArray, new PersonAgeComparator());

我们有一个方法引用,如:

static void sort(T[] a, Comparator super T> c)

请注意,此时的接口Comparator是一个用 @Functional 来注解的,所以你可以用一个Lambda表达式来写方法定义,来创建Comparator的实例:

Arrays.sort(rosterAsArray,

(Person a, Person b) -> {

return a.getBirthday().compareTo(b.getBirthday());

}

);

在Person.compareByAge函数中,其instance已存在,所以我们要比较两个Person实例的年龄大小,用Lambda expression可以这样写:

Arrays.sort(rosterAsArray,

(a, b) -> Person.compareByAge(a, b)

);

由于咱们的Lambda表达式调用的是一个已经存在的方法,即,我们做的就是方法引用,所以你就可以用双冒号::来改造一下:

Arrays.sort(rosterAsArray, Person::compareByAge);

以下是Oracle官网对Lambda表达式的一段说明:

You use lambda expressions to create anonymous methods. Sometimes, however, a lambda expression does nothing but call an existing method. In those cases, it's often clearer to refer to the existing method by name. Method references enable you to do this; they are compact, easy-to-read lambda expressions for methods that already have a name.

一共有4种这样的类型引用:KindExample

对静态方法的引用ContainingClass::staticMethodName

对一个特定对象的实例方法的引用containingObject::instanceMethodName

对一个任意对象特定类型的实例方法的引用ContainingType::methodName

对构造函数的引用ClassName::new

官网例子参考:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤题库】陕西师范大学164104 网络财务管理 作业(高起专)

《网络财务管理》作业 一、选择题 1.财务管理网络化( )了地域限制,提高了信息传输速度,增加了信息的使用价值,降低了企业成本,并促使传统的财务管理演化为网络财务管理。 A.打破 B.连通 C.更新 D.重组 2.拥有雄厚的( &…

q7goodies事例_Java 8 Friday Goodies:Lambda和SQL

q7goodies事例在 Data Geekery ,我们喜欢Java。 而且,由于我们真的很喜欢 jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 我们已经 写了一些关于Java 8好东西的博客 ,现在我们觉得是时候开始一…

【渝粤题库】陕西师范大学180208 产品管理 作业(专升本)

《产品管理》作业 一、单选题 1、产品的内涵不断扩大,产品的外延也发展到产品五层次,最基本的层次是( ),即向消费者提供的产品基本效用和利益,也是消费者真正要购买的利益和服务。 A 期望产品 B 一般产品 C…

【渝粤题库】陕西师范大学200221 中国思想史 作业(高起专)

一、单选题 "性善论"是谁提出来的? A老子 B孟子 C孔子 D庄子 2 ()(公元240~248年)是魏齐王曹芳的年号。 A建元 B元光 C元平 D正始父义、母慈、兄友、弟恭、子孝五种美德合称? A五义B 五则C五典 …

IDE日志分析方法pt。 2

介绍 在第一部分中,我解释了日志分析的理论方法,我认为这对维持工程师是最合适的。 这位工程师不需要在日志出现时立即对其进行分析,而是专注于对复杂问题的深入分析。 在第二部分中,我将展示一个复杂的模板可以涵盖许多搜索场景&…

【渝粤题库】陕西师范大学200821 课程与教学论(计算机)

《课程与教学论》作业 一、选择题 1.教师应有高尚的思想道德和渊博的知识及教育能力,还必须具备良好的心理素质。下面不属于教师心理素质方面的是( )。 A.意志 B.自我意识 C.情绪 D.…

java电影票选座_jQuery实现电影票选座效果手机端代码

部分js代码//判断页面加载完成window.onload function () {if (document.readyState "complete") {$("body").show();}};var arr []; //已选座位数组var dj 99; //电影票单价 number$(".danjia").text(dj);/*遍历检查售票状态typ 0 可选typ …

【渝粤题库】陕西师范大学201571金融法作业(专升本)

《金融法》作业 一、单项选择题 1.下列银行中属于政策性银行的有( )。 A.中国人民银行 B.中国农业银行 C.浦东发展银行 D.中国进出口银行 2.中央银行的职能不包括( )。 A.发行的银行 B.储户的银行 C.银行的…

java char指针数组_简单总结C语言中各种类型的指针的概念

C语言中有很多关于指针的使用,指针也是C语言的灵魂所在,而且C语言中也有很多有关指针的概念,这里学习并总结了一些知道的概念。常量指针:首先它是一个指针,常量只是用来修饰指针的定语。其定义如下:char co…

【渝粤题库】陕西师范大学202081 管理学 作业 (专升本、高起本、高起专)

《管理学〉作业 一、判断改错 1.使管理科学从重视对物的研究转向重视对人的研究的理论是马斯洛的需求层次理论。 2.根据亨利明茨伯格的研究,管理者扮演的决策方面的角色包括组织发言人、纠纷调解者、资源分配者和谈判者…

【渝粤题库】陕西师范大学202961 教育社会学 作业(高起本、专升本)

《教育社会学》作业 一、 单项选择题 1.从研究对象上讲,教育社会学探究的主要是 A.广义教育 B.中观教育 C.狭义教育 D.社会教育 2.教育社会对自身以外的其他社会现象所发生的功能是 A.教育社会的外功能 B.教育社会的内功能 C.教育社会的负功能…

java 面试指南_Java面试参考指南–第1部分

java 面试指南JAVA面向对象的概念 Java in基于面向对象的概念,它允许更高级别的抽象以实际方式解决任何问题。 面向对象的方法将实际对象中的问题解决方案概念化,更易于在整个应用程序中重用。 例如椅子,风扇,狗,电脑…

java 提交的内存_Java使用内存映射实现大文件的上传

在处理大文件时,如果利用普通的FileInputStream 或者FileOutputStream 抑或RandomAccessFile 来进行频繁的读写操作,都将导致进程因频繁读写外存而降低速度.如下为一个对比实验。package test;import java.io.BufferedInputStream;import java.io.FileIn…

【渝粤题库】陕西师范大学210006幼儿园课程作业(高起专)

《幼儿园课程》(专科)作业 一、单选题 1、活动课程是以( )为中心来组织学习内容的。 A 学科 B 问题 C 概念 D 儿童 2、( )指的是幼儿园教师根据实际情况灵活的将课程方案转化为生动的课程实践(现…

创建一个安全的Spring REST API

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 “如果有用,它将被修改。” 这些智慧之言来自我的QA老师,他们…

【渝粤题库】陕西师范大学292071社会统计学作业(高起专)

《社会统计学》作业 一、单项选择题 1、从历史上看,在社会经济统计学的形成过程中,首先使用“统计学”这一术语的是( )。 A. 政治算术学派 B. 国势学派 C. 数理统计学派 D. 社会经济统计学派 2、社会统计的研究对象是(…

java并发编程十 原子累加器和Unsafe

文章目录 原子累加器cas 锁原理之伪共享 UnsafeUnsafe CAS 操作 原子累加器 累加器性能比较 private static <T> void demo(Supplier<T> adderSupplier, Consumer<T> action) {T adder adderSupplier.get();long start System.nanoTime();List<Thread…

mysql select 返回列_SQL / mysql – selectdistinct / UNIQUE,但返回所有列?

你正在寻找一个组&#xff1a;select * from table group by field1偶尔可以写一个独特的声明&#xff1a;select distinct on field1 * from table然而&#xff0c;在大多数平台上&#xff0c;上述两者都不会起作用&#xff0c;因为其他列上的行为是未指定的。 (MySQL中的第一…

【渝粤题库】陕西师范大学300018 世界史(下)

《世界史&#xff08;下&#xff09;》作业 一、名词解释 1、三权分立 2、考迪罗 3、斯大林格勒会战 4、马歇尔计划 5、匈牙利事件 6、美第奇家族 7、明治维新 8、人文主义 9、古巴导弹危机 10、奴隶贸易 11、七年战争 12、大西洋宪章 13、重商主义 14、文官制度 15、《解放宣言…

【渝粤题库】陕西师范大学600002 物理化学(下) 作业(专升本)

《物理化学&#xff08;下&#xff09;》作业 一.选择题 1.已知298 K时&#xff0c;(NH4)2SO4.NaOH.Na2SO4的 分别为3.064 10-2. 2.451 10-2.2.598 10-2 Sm2 mol-1&#xff0c;则NH4OH的为 ( ) A. 1.474 10-2 B. 2.684 10-2 C. 2.949 10-2 D. 5.428 10-2 2.质量摩尔浓度…