当前位置: 首页 > news >正文

柳州网站定制12306网站开发公司

柳州网站定制,12306网站开发公司,黑龙江建设网站打不开,外包网址文章目录 一、方法引用1.1、方法引用的理解1.2、格式1.3、举例 二、构造器引用2.1、格式2.2、例子2.3、数组引用 一、方法引用 1.1、方法引用的理解 方法引用,可以看做是基于lambda表达式的进一步刻画当需要提供一个函数式接口的实例时,可以使用lambda…

文章目录

  • 一、方法引用
    • 1.1、方法引用的理解
    • 1.2、格式
    • 1.3、举例
  • 二、构造器引用
    • 2.1、格式
    • 2.2、例子
    • 2.3、数组引用

一、方法引用

1.1、方法引用的理解

  • 方法引用,可以看做是基于lambda表达式的进一步刻画
  • 当需要提供一个函数式接口的实例时,可以使用lambda表达式提供此实例
  • 当满足一定条件时,还可以使用方法引用或构造器引用替换lambda表达式

1.2、格式

总体理解:类(对象)::方法名

  • 对象 :: 实例方法名
  • 类 :: 静态方法名
  • 类 :: 实例方法名

1.3、举例

前提:Lambda体只有一句语句,并且是通过调用一个对象/类现有的方法来完成的

  • 对象 :: 实例方法名
	@Testpublic void test1() {// 1.匿名实现类Consumer<String> con1 = new Consumer<String>(){@overridepublic void accept(String s){System.out.pringln(s);}}// 2.lambda表达式Consumer<String> con1 = s -> System.out.println(s);// 3.方法引用Consumer<String> con2 = System.out::println;}

1、accept()方法的形参、返回值和println()方法的一样,所以可用方法引用代替lambda表达式
2、函数式接口中的抽象方法a在被重写时使用了某一个对象的实例方法b。如果方法a的形参列表、返回值类型与实例方法b的形参列表、返回值类型都相同(满足多态场景也可以),则我们可以使用方法b实现对方法a的重写、替换。

  • 类 :: 静态方法名
	@Testpublic void test3() {// 1.匿名实现类Comparator<Integer> com1 = new Comparator<Integer>(){@overridepublic int compare(Integer o1,Integer o2){return Integer.compare(o1,o2);}}// 2.lambda表达式Comparator<Integer> com1 = (t1,t2) -> Integer.compare(t1,t2);// 3.方法引用Comparator<Integer> com2 = Integer::compare;}

函数式接口中的抽象方法a在被重写时使用了某一个类的静态方法b。如果方法a的形参列表、返回值类型与方法b的形参列表、返回值类型都相同(满足多态场景也可以),则可以使用方法b实现对方法a的重写、替换。

  • 类 :: 实例方法名
	@Testpublic void test5() {// 1.匿名实现类Comparator<String> com1 = new Comparator<String>(){@overridepublic int compare(String o1,String o2){retrun o1.compareTo(o2);}}// 2.lambda表达式Comparator<String> com1 = (s1,s2) -> s1.compareTo(s2);// 3. 方法引用Comparator<String> com2 = String :: compareTo;}

函数式接口中的抽象方法a在被重写时使用了某一个对象的方法b。如果方法a的返回值类型与方法b的返回值类型相同(满足多态场景也可以),同时方法a的形参列表中有n个参数,方法b的形参列表有n-1个参数,且方法a的第1个参数作为方法b的调用者,且方法a的后n-1参数与方法b的n-1参数匹配(类型相同或满足多态场景也可以)

二、构造器引用

2.1、格式

类名::new
  • 调用类名对应的类中的某一个确定的构造器
  • 具体调用的是哪一个构造器?取决于函数式接口的抽象方法的形参列表

2.2、例子

	@Testpublic void test1(){// 1.匿名实现类Supplier<Employee> sup = new Supplier<Employee>() {@Overridepublic Employee get() {return new Employee();}};// 2.lambda表达式Supplier<Employee>  sup1 = () -> new Employee();// 3.构造器引用, 调用的是Employee类中的空参构造器Supplier<Employee>  sup2 = Employee :: new;}
	@Testpublic void test2(){// 1.lambda表达式Function<Integer,Employee> func1 = id -> new Employee(id);// 2.构造器引用,调用的是Employee类中的Employee(int id)这个构造器Function<Integer,Employee> func2 = Employee :: new;}

2.3、数组引用

  • 格式:数组类型名::new
  • 例子
@Test
public void test(){// 1.匿名实现类Function<Integer,String[]> func1 = new Function<Integer,String[]>{@overridepublic String[] apply(Integer length){return new String[length];}}// 2.lambda表达式Function<Integer,String[]> func1 = length -> new String[length];String[] arr1 = func1.apply(5);// 3.数组引用Function<Integer,String[]> func2 = String[] :: new;String[] arr2 = func2.apply(10);
}
http://www.lakalapos1.cn/news/2877/

相关文章:

  • 网站后台栏目网站建设的七大优缺点
  • 网站开发报价表模板荣耀手机商城官方网
  • 创办个人网站2008iis7建立网站
  • 如何仿造一个网站做批量建站怎么赚钱
  • 网站制作从零开始网站建设规划面试技巧
  • 小域名 网站备案在哪网站可以做农信社模拟试卷
  • 宁晋做网站seo蒙牛伊利企业网站专业性诊断
  • 手机 网站 分辨率一建的专业
  • 中国建设银行网上银行网站做网站的实验报告
  • 动画设计工资企业seo解决方案
  • 当前主流的网站开发语言网站 手机验证码 实例
  • 青海手机网站建设慧聪网怎样做网站友情链接
  • 学生做兼职的网站网站页面排版
  • 网站域名com和cnwordpress 下载售卖
  • 对文化传播网站建设的建议200平方办公室装修设计
  • 福田网站制作比较好的wordpress多页面主题
  • 郑州建站模板搭建做网站公司商丘
  • 中文wordpress网站品牌建设 政策
  • 全国小学网站建设做游戏代练网站
  • 网络科技公司 网站建设在线做ps是什么网站
  • 制作网站制作网站建设的营销qq官网
  • wordpress备份如何安装莆田seo接单
  • 网站编辑是做网页编辑吗wordpress自适应模版
  • 大气微电影类网站织梦模板完整版高端建材品牌
  • 有很多长尾怎么做网站内容做网站公司赚钱吗?
  • 怎样做网站推广网站程序设置主页面
  • 网站的空间是什么意思网站开发一定要用框架嘛
  • 推荐武进网站建设即墨网站建设
  • 引擎网站wordpress显示不同的页脚
  • 面包机做面包网站濮阳自适应网站建设