当前位置:   article > 正文

3分钟,学会一个测试员必懂 Lambda 小知识!

3分钟,学会一个测试员必懂 Lambda 小知识!

函数式接口

问:Lambda 表达式的类型是什么?

答:函数式接口

问:函数式接口是什么?

答:只包含一个抽象方法的接口,称为函数式接口 (functional interface) , 一般用 @FunctionalInterface 注解来检测是否是函数式接口。

自定义函数式接口
  1. @FunctionalInterface
  2. public interface MyFunctionalInterface {
  3. String test(String p);
  4. }
  5. 使用泛型
  6. @FunctionalInterface
  7. public interface MyFunctionalInterface<T,R> {
  8. R test(T t);
  9. }

 如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386    

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click函数式接口作为方法参数

  1. public void test(MyFunctionalInterface mfi,String str) {
  2. System.out.println(mfi.getValue(str));
  3. }
  4. 调用test()
  5. test(p -> p.toUpperCase(),"luojie");
  6. 控制台输出:
  7. LUOJIE
常见函数式接口

方法引用

问:什么是方法引用?

答:当我们需要完成的 Lambda 体操作,已经有实现的方法了,可以使用方法引用!

问:为什么用方法引用?

答:省略参数,少写代码

举个例子
  1. Comparator<Integer> com2 = (x, y) -> Integer.compare(x,y);
  2. //上面我们之前学过的Lambda表达式,其中Lambda体操作是比较两个整数的大小,
  3. //而且Integer的compare()正好完就是我需要完成的操作。
  4. //可以方法引用替代
  5. Comparator<Integer> com3 = Integer::compare;
方法引用格式

方法引用使用操作符 :: 将方法名和对象或类的名字分开。
分三种格式:

  • 类::静态方法

  • 对象::实例方法

  • 类::实例方法

类::静态方法

  1. (x, y) -> Integer.compare(x,y);
  2. 方法引用改造:
  3. Integer::compare;

对象::实例方法

  1. (x) -> System.out.printf(x);
  2. 方法引用改造:
  3. System.out::println;

类::实例方法

  1. test((x,y)->x.equals(y),"123","123");
  2. 方法引用改造:
  3. test(String::equals,"123","abc");
  4. 注意:当引用方法的第一个参数是调用对象,并且第二个参数是需要传入参数(或无参数)时:ClassName::methodName
  5. 比如上例子中:"123"当作equals方法调用对象,"abc"为传入equals()参数。
  6. 相当于:"123".equals("abc")

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/402275
推荐阅读
相关标签
  

闽ICP备14008679号