栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【lambda】java中的引用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【lambda】java中的引用

目录

定义方法引用

对象::实例方法名类::静态方法名类::实例方法名 构造器引用数组引用附

定义

方法引用: 可以看作lambda表达式深层次的表达,方法引用作为函数式接口的一个实例,可通过方法名来指向方法;可认为是lambda表达式的一个语法糖。
语法格式: 使用操作符 :: 将类/对象与方法名分割开。
使用场景:

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

注意: 强两种场景下接口中抽象方法的形参列表和返回值要与方法应用的形参列表和返回值类型相同

方法引用

举例:Consumer consumer1 = System.out::println;

对象::实例方法名
@Test
 public void test6(){
      // 获取对象
      PrintStream obj = System.out;
      // 引用对象实例方法
      Consumer consumer1 = obj::println;
      HashMap map = new HashMap<>();
      IntSupplier intSupplier = map::size;
  }
类::静态方法名
@Test
 public void test8() {
      Comparator comparator = (a, b) -> {
          return Integer.compare(a, b);
      };
      Comparator comparator1 = Integer::compare;
      comparator.compare(1, 2);
  }
类::实例方法名

适用于第一个参数作为调用对象,参数二开始为调用参数。

// 一个入参
@Test
public void test7() {
   Comparator comparator = String::compareTo;
     Comparator comparator1 = (a, b) -> a.compareTo(b);
     comparator.compare("a", "b");
 }
// 多入参例子
@FunctionalInterface
interface LambdaI {
   T test(T s1,T s2,T s3);
}
class LambdaD{
   LambdaD test(LambdaD s1,LambdaD s2){
       return new LambdaD();
   }
}
class Demo{
   @Test
   public void test9(){
       LambdaI result = new LambdaI() {
           @Override
           public LambdaD test(LambdaD s1, LambdaD s2,LambdaD s3) {
               return s1.test(s1, s2);
           }
       };
       LambdaI result1 = LambdaD::test;
   }
}
构造器引用

与方法引用类似,函数式接口抽象方法的形参列表与构造器形参列表一致,返回值为构造器所属类的类型时
类 :: new

@Test
 public void test10(){
     Supplier supplier = HashMap::new;
     Function frmo = TestClass::new;
 }
 class TestClass{
     private String name;
     public TestClass(String name) {
         this.name = name;
     }
 }
数组引用

数组引用是构造器引用的一种,相当于将数组看作一个特殊的类。

@Test
 public void test11(){
    Function function = Object[] :: new;
 }

lambda使用之函数式接口
lambda语法及使用
java中的引用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/750528.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号