java8 :: 双冒号传多个参数
‘::’是一种函数式接口的一种书写方法引用的方式
Kind | Syntax | Examples |
---|---|---|
Reference to a static method | ContainingClass::staticMethodName |
Person::compareByAge MethodReferencesExamples::appendStrings |
Reference to an instance method of a particular object | containingObject::instanceMethodName |
myComparisonProvider::compareByName myApp::appendStrings2 |
Reference to an instance method of an arbitrary object of a particular type | ContainingType::methodName |
String::compareToIgnoreCase String::concat |
Reference to a constructor | ClassName::new |
HashSet::new |
The following example, MethodReferencesExamples, contains examples of the first three types of method references:
import java.util.function.BiFunction; public class MethodReferencesExamples { public static <T> T mergeThings(T a, T b, BiFunction<T, T, T> merger) {
return merger.apply(a, b);
} public static String appendStrings(String a, String b) {
return a + b;
} public String appendStrings2(String a, String b) {
return a + b;
} public static void main(String[] args) { MethodReferencesExamples myApp = new MethodReferencesExamples(); // Calling the method mergeThings with a lambda expression
System.out.println(MethodReferencesExamples.
mergeThings("Hello ", "World!", (a, b) -> a + b)); // Reference to a static method
System.out.println(MethodReferencesExamples.
mergeThings("Hello ", "World!", MethodReferencesExamples::appendStrings)); // Reference to an instance method of a particular object
System.out.println(MethodReferencesExamples.
mergeThings("Hello ", "World!", myApp::appendStrings2)); // Reference to an instance method of an arbitrary object of a
// particular type
System.out.println(MethodReferencesExamples.
mergeThings("Hello ", "World!", String::concat));
}
}
官方文档
https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html
java8 :: 双冒号传多个参数的更多相关文章
- Java8中的[方法引用]“双冒号”——走进Java Lambda(四)
前面的章节我们提及到过双冒号运算符,双冒号运算就是Java中的[方法引用],[方法引用]的格式是 类名::方法名 注意是方法名哦,后面没有括号“()”哒.为啥不要括号,因为这样的是式子并不代表一定会调 ...
- java 8 双冒号运算符
前言 java8增加了双冒号运算符.lambda本质上都是语法糖,学习过C#委托.匿名委托再理解java8中的双冒号运算符就容易多了.双冒号就是把方法当作参数传递给需要的方法,或者说是传递到strea ...
- Java 8 Lambda表达式之方法引用 ::双冒号操作符
双冒号运算符就是java中的方法引用,方法引用的格式是类名::方法名. 这里只是方法名,方法名的后面没有括号“()”.--------> 这样的式子并不代表一定会调用这个方法.这种式子一般是用作 ...
- 【JAVA8】双冒号
现在JDK双冒号是: public class MyTest { public static void printValur(String str){ System.out. ...
- java8:(Lambda 表达式,Supplier,@FunctionalInterface,foreach(),Optional,Stream().collect,双冒号,joining,partitioningBy分区,collectingAndThen,filter())
1.Lambda 表达式: 引导:http://www.cnblogs.com/yulinfeng/p/8452379.html DEMO1: List<String> names1 = ...
- php中"::"双冒号有什么作用
PHP代码 lazycms::$sysname 第一次见到这种表现方式,请问是双冒号什么意思 答:直接属类的方法或属性.也就是static 静态方法或属性的使用.域运算符,一般用于在B类对象中使用A类 ...
- C#中双问号、双冒号等几个特殊关键字
1.@ 这个东东看似和邮件有关啊,但是在C#的世界里,可跟邮件没有一毛钱关系,它是string的女朋友(当然了string有N多女友),二者结合就可以发挥作用了.你可以给它起个名字,叫做“逐字字符串” ...
- Java开发笔记(六十三)双冒号标记的方法引用
前面介绍了如何自己定义函数式接口,本文接续函数式接口的实现原理,阐述它在数组处理中的实际应用.数组工具Arrays提供了sort方法用于数组元素排序,可是并未提供更丰富的数组加工操作,比如从某个字符串 ...
- 3-18 关于namespace,双冒号::的用法; SelfYield.
关于namespace,双冒号::的用法. 防止引用多个模块在一个文件/类中,有重名的对象.::可以调用类的类方法,和常量. class Foo BAR = "hello" ...
- wind的R接口、况客RSDK学习,双冒号以及quantmod主题
本文主要参考:来自segmentfault上的FinanceR的专栏 https://segmentfault.com/a/1190000004580610 并自己对生疏不解之处做了补充和注释. 当然 ...
随机推荐
- Linux 软件包 管理
rpm.deb包管理操作 yum.apt/apt-get线上管理操作 查找软件包 $ yum search [name|info] $ apt-cache search [name|info] 安装软 ...
- CentOS 7关闭防火墙 SElinux 配ip
屏蔽出站 iptables -t filter -A OUTPUT --dst 192.168.0.191/32 -j DROP iptables -t filter -A OUTPUT --dst ...
- 初学银河麒麟linux笔记 第一章 虚拟机、麒麟系统、QT安装与运行
由于手头一个项目的QT软件开发需要在银河麒麟系统上运行,借此机会开始从头学习linux系统 首先下载虚拟机VMware 16和麒麟系统iso,这里参考的 https://blog.51cto.com/ ...
- pycharm、pyqt5、pyuic、anaconda配置界面
转载一篇很棒的文档,讲解的是如何在pycharm里面使用QT desiger勾画界面并且将相应的界面转化成py文件 https://www.jianshu.com/p/8b992e47a0e4 个人 ...
- 由于CVE-2020-10770漏洞,k8s集群升级keycloak 8.0.0-->15.0.0(由于15.0.0最近又出安全漏洞,升级为16.0.0)
背景 前段时间项目组用到的8.0.0版本的keycloak被安全部门同事扫出来一个中危漏洞: A flaw was found in Keycloak, where it is possible to ...
- docker 搭建 nginxconfig.io 文档
docker镜像仓库 https://hub.docker.com/r/devopstestlab/nginxconfig.io 获取镜像 docekr pull devopstestlab/ngin ...
- linux环境下mariadb10.5.16的数据存储目录修改
mysql或mariadb的数据,一般默认存在/var/lib/mysql目录下,本文介绍把mariadb数据存到容量较大的目录中,如/home 操作步骤: 1.将/var/lib/mysql的数据复 ...
- centos8使用kubeadm搭建高可用k8s集群
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具. 这个工具能通过两条指令完成一个kubernetes集群的部署: # 创建一个 Master 节点 kubeadm ini ...
- maven jar包新版本检测工具推荐
为什么需要 经常使用maven来构建项目的朋友,应该遇到过类似这样的情况:项目通过maven引入了很多jar包,随着时间推移,这些jar包都有了更优的新版本出来,想升级,但又觉得很繁琐.主要是因为两方 ...
- this指向问题大全和call,apply,bind详解
详细笔记链接:https://www.jianshu.com/p/bc541afad6ee 函数内外作用域问题: var a = 1function f1(){ var a = 2 console.l ...