过于基础,就不废话了,实验代码如下:

package com.demo;

import java.util.Arrays;

import java.util.List;

import java.util.function.BiPredicate;

import java.util.function.Function;

public class DoubleColonTest {

String str;

public DoubleColonTest(String str) {

this.str = str;

}

public static void main(String[] args) {

/**

* :: 双冒号表示方法引用

* 案例一:对象::实例方法

* public interface Consumer {

* void accept(T t);

* }

*

* public void println(Object x) {

* 此处省略

* }

*/

List list = Arrays.asList(1, 2, 3);

list.forEach(System.out::println);

System.out.println("------------分割线------------------");

/**

* 案例二:类::实例方法

* public interface BiPredicate {

* boolean test (T t, U u);

* }

*

* public boolean equals(Object obj) {

* return (this == obj);

* }

*/

System.out.println(testEquals(Object::equals, "a", "a"));

System.out.println("------------分割线------------------");

/**

* 案例三:类::静态方法

* public interface Function {

* R apply (T t);

* }

*

* public static int abs(int a) {

* return (a < 0) ? -a : a;

* }

*

* 总结:当方法的参数类型,参数个数,参数顺序与接口方法一致时,可以使用双冒号

* java内置了许多函数式接口,在java.util.function下。感兴趣的同学可以看下

*/

System.out.println(testAbs(Math::abs, -10));

System.out.println("------------分割线------------------");

/**

* 双冒号表示构造器引用,当构造器的参数类型,参数个数,参数顺序与接口方法一致时,可以使用双冒号

* public interface Function {

* R apply (T t);

* }

*

* public DoubleColonTest(String str) {

* this.str = str;

* }

*

*/

Function testFunction = DoubleColonTest::new;

testConstructor(testFunction, "hello world");

testConstructor(DoubleColonTest::new, "hello the world");

System.out.println("------------分割线------------------");

/**

* 双冒号表示数组引用,当方法的参数类型,参数个数,参数顺序与接口方法一致时,可以使用双冒号

* public interface Function {

* R apply (T t);

* }

*

* Integer [] integers = new Integer[t];

*/

testArray(Integer[]::new, 10);

}

public static boolean testEquals(BiPredicate biPredicate, Object obj1, Object obj2) {

return biPredicate.test(obj1, obj2);

}

public static Integer testAbs(Function function, Integer integer) {

return function.apply(integer);

}

public static void testConstructor(Function function, String str) {

DoubleColonTest test = function.apply(str);

System.out.println(test.str);

}

public static void testArray(Function function, Integer length) {

Integer[] apply = function.apply(length);

System.out.println(apply.length);

}

}

lambda表达式双冒号使用条件_java_java基础_lambda表达式双冒号用法相关推荐

  1. Java基础_Lambda表达式 函数是接口 Stream流

    一.Lambda表达式(1.8特性) 函数式编程始终编程方式,它将电脑视为函数的计算.将业务逻辑细化.抽象.封装成一个个功能函数(方法),并借助语言自带的高阶函数,将整个业务流程转化为函数之间的相互调 ...

  2. lambda表达式可以用来声明_lambda表达式可以用来创建包含多个表达式的匿名函数...

    [单选题]下面程序中语句print(i*j)一共执行了____次. for i in range(5): for j in range(2,5): print(i*j) [填空题]_____是目前比较 ...

  3. VUE基础、表达式和指令

    1.Vue实例挂载(el)的标签 每个Vue实例通过el配置挂载的标签,该标签可以通过id或者是class挂载. 实例上的属性和方法只能够在当前实例挂载的标签中使用. <div id=" ...

  4. Verilog基础:表达式位宽的确定(位宽拓展)

    相关文章 Verilog基础:位宽拓展和有符号数运算的联系 Verilog基础:表达式符号的确定 Verilog基础:数据类型 表达式位宽 如果想要在计算表达式时获得和谐一致的结果,那么控制表达式中的 ...

  5. javascript基础语法——表达式

    前面的话 一般地,关于javascript基础语法,人们听得比较多的术语是操作符和语句.但是,其实还有一个术语经常使用,却很少被提到,这就是javascript表达式(expression).本文将详 ...

  6. 表达式树练习实践:入门基础

    什么是表达式树 来自微软官方文档的定义: 表达式树以树形数据结构表示代码. 它能干什么呢? 你可以对表达式树中的代码进行编辑和运算.这样能够动态修改可执行代码.在不同数据库中执行 LINQ 查询以及创 ...

  7. JavaScript 基础知识 表达式和运算符

    表达式的概念:将同类型的数据(如常量.变量.函数等),用运算符号按一定的规则连起来的.有意义的式子称为表达式 一.原始表达式 最简单的表达式,是表达式的最小单位.JavaScript中的原始表达式包含 ...

  8. 学习游戏原画需要什么条件或者基础吗?

    随着游戏行业的不断发展,有报告显示,如今我们国家已经跻身进入世界游戏大国之一,而游戏产业在带动经济发展的同时,同样也充当了让人们身心放松的角色.而游戏原画作为游戏行业中缺一不可的存在,在游戏制作中处于 ...

  9. APS推进实施的条件与基础

    APS已经成为数字化转型应用的热点.前两天eworks组织的一个活动上,我讲了一次APS选型策略,听众提了很多问题,其中有一个问题是APS推进实施的条件与基础.因为弹窗在家办公,所以抽空尝试回答一下. ...

最新文章

  1. 图解ARP协议分析实例
  2. 【学习笔记】14、标准数据类型—字典
  3. c语言游戏编程网盘下载,C语言游戏编程 计算器(5分下载)
  4. js鼠标按键事件和键盘按键事件用法实例汇总
  5. 对于Mybatis在C#.Net中个人使用的总结(一) Mybatis 的结果映射
  6. 【Hibernate】Hibernate实体关系映射——双边的多对多关系
  7. 学习笔记-canny边缘检测
  8. SAP MM ME51N 创建采购申请单据时候永远取物料主数据基本计量单位
  9. opengl 实时波形显示_OpenGL1------OpenGL概述
  10. Python实现机房管理软件的文件分发功能
  11. mybatis基础总结01
  12. IDEA开发工具当前窗口导入多个项目
  13. 第073封“情书”:小目标20181022Using UV Layout ForGeometryPacking<Entagma>Houdini 2018
  14. 2寸的照片长宽各是多少_1寸和2寸的照片的长和宽各是几厘米?
  15. 一款老飞飞_魅力飞飞脚本研究增加攻击与暴击几率方式探讨源码(附带易语言源码)
  16. “满五唯一”和“满二唯一”是什么?有什么不同?
  17. 【MySQL】—入门介绍
  18. 树莓派制作无线路由器
  19. git Incorrect username or password (access token)问题解决
  20. 怎么查看拼多多店铺销量?怎么查看店铺后台数据图?

热门文章

  1. WEB短信平台定制 短信系统构建 路由通道搭建 web版短信后台管理系统 概括简介
  2. 微信公众号--开发模式之用户关注后自动回复(Java实现)
  3. java引_JAVA中的引用
  4. NDK-r25交叉编译qemu:tests/qtest/libqos/libqos.fa.p/pci.c.o报错
  5. dom4j的一些总结
  6. 哪个软件能代替斐讯路由_斐讯路由器控制软件 4.2.1 去广告版 - 用手机管理斐讯路由器...
  7. 斐讯dc1服务器什么时候修复,[4月1日更新!!]斐讯DC1插座自制固件接入ha
  8. 学习笔记 -《量子计算与编程入门》- 量子程序
  9. 博客的WordPress地址(URL)修改后博客打不开解决方法
  10. docker(七)容器与外部通信