首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏烟草的香味

    Java8 方法引用

    关于lambda表达式可以看这篇文章Java8 Lambda表达式 当lambda表达式只是执行一个方法调用时, 直接通过方法引用的形式调用. 方法引用是一种更简洁的lambda表达式. 可以看出来, 方法引用就是用已经实现的方法来实现lambda表达式中的实现, 所以引用的方法要满足以下要求: 引用的方法的参数列表必须与实现的抽象方法参数列表保持一致. 方法引用的语法为: 类或对象名::方法名或new 通过引用即可引用指定类或对象的指定方法 分类 下面介绍以下几种不同的方法引用. 1.静态方法引用 顾名思义, 静态方法引用就是引用类的静态方法, 语法为 2.实例方法引用 顾名思义,实例方法引用就是引用对象实例的方法, 语法为: 对象实例::方法名 方法引用与lambda表达式: String str = "aaaaaaaaaaa"; // 若实例方法要通过对象来调用 3.构造方法引用 顾名思义, 构造方法引用就是引用类的构造方法, 语法为: 类名::new 方法引用与lambda表达式: // 会根据参数寻找合适的构造方法 String::new 等价于lambda

    68420发布于 2019-07-25
  • 来自专栏Java旅途

    Java8——方法引用

    方法引用就是通过类名或方法名引用已经存在的方法来简化lambda表达式。那么什么时候需要用方法引用呢?如果lamdba体中的内容已经有方法实现了,我们就可以使用方法引用。 一、方法引用的三种语法格式 1. 构造器应用写法: 1@Test 2void test8(){ 3 Supplier<Person> supplier = Person::new; 4} Supplier接口: 1@FunctionalInterface serialVersionUID = -7008474395345458049L; 4 5 private String name; 6 private int age; 7 8 lamdba的另一种表现形式 方法引用被调用的方法的参数列表和返回值类型需要与函数式接口中抽象方法的参数列表和返回值类型要一致 方法引用中使用类::实例方法的条件是第一个参数是这个实例方法的调用者,第二个参数是这个实例方法的参数

    57230发布于 2020-07-16
  • 来自专栏小工匠聊架构

    Java 8 - 05 方法引用

    方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它们。在一些情况下比起使用Lambda表达式, 更易读 。上面的栗子就是借助了Java 8 API ,用方法引用写的一个排序的例子。 ---- 方法引用 方法引用可以被看作仅仅调用特定方法的Lambda的一种快捷写法。 当你需要使用方法引用时,目标引用放在分隔符 :: 前,方法的名称放在后面 Enginner::getJob 就是引用了 Enginner类中定义的方法 getJob 。 ---- 如何构建方法引用 方法引用主要有三类。 ,来确定对于给定的函数式接口,这个方法引用是否有效:方法引用的签名必须和上下文类型匹配 来个小测验吧 测验:方法引用 下列Lambda表达式的等效方法引用是什么?

    65320发布于 2021-08-17
  • 来自专栏Java旅途

    Java8——方法引用

    方法引用就是通过类名或方法名引用已经存在的方法来简化lambda表达式。那么什么时候需要用方法引用呢?如果lamdba体中的内容已经有方法实现了,我们就可以使用方法引用。 一、方法引用的三种语法格式 1. : @Test void test8(){ Supplier<Person> supplier = Person::new; } Supplier接口: @FunctionalInterface 的另一种表现形式 方法引用被调用的方法的参数列表和返回值类型需要与函数式接口中抽象方法的参数列表和返回值类型要一致 方法引用中使用类::实例方法的条件是第一个参数是这个实例方法的调用者,第二个参数是这个实例方法的参数 构造器引用需要调用的构造器的参数列表要与函数式接口中抽象方法的参数列表一致

    99450发布于 2020-07-13
  • 来自专栏Java小技巧

    Java 8 新特性|方法引用

    1 方法引用:代码范例 Java 8 中新增加了 方法引用 这个概念。但,什么是方法引用呢 ? 这种使用方法名做参数的做法,在 Java 8 中称之为 「 方法引用 」 2 方法引用:总结 方法引用 是 Java 8 新增加的功能。 方法引用有点类似于 C / C++ 中的 函数指针 ,通过方法名称指向方法。 Java 8 中的方法引用通过 :: 符号引用方法,而且支持一下类型的方法引用 1、 静态方法 2、 实例方法 3、 使用 new 运算符的构造函数。 例如 TreeSet::new 重写上面的范例,演示下如何引用静态方法和实例方法 package com.sjh.test.java8; import java.util.Arrays; import

    47330编辑于 2022-05-23
  • 来自专栏c++与qt学习

    Java8新特性-----方法引用和构造器引用

    方法引用和构造器引用 方法引用的概念 语法格式 对象::实例方法名 注意: 类::静态方法名 类::实例方法名 注意 构造器引用 需要调用的构造器的参数列表要与函数式接口中的参数列表保持一致 数组引用 详细可参考下面这篇文章 ---- 方法引用的概念 若lambda体中的内容有方法已经实现了,我们可以使用方法引用 (我们可以理解为方法引用时lambda表达式的另外一种表现形式) ---- 语法格式 而且第一个参数要是该引用方法的所在类型的或其父类,除接口方法的第一个参数以外, 其余参数的类型要求一样 class Test1 { public void a(int param1, int param2 function1=String[]::new; System.out.println(function1.apply(20).length); ---- 详细可参考下面这篇文章 【Java8】 方法引用 讲解

    53510发布于 2021-11-15
  • 来自专栏山海散人技术

    JDK8 新特性方法引用

    方法引用 方法引用的类型 共有 4 种类型的方法引用: 类型 示例 引用静态方法 ContainingClass::staticMethodName 引用特定对象的实例方法 containingObject ::instanceMethodName 引用特定类型的任意对象的实例方法 ContainingType::methodName 引用构造方法 ClassName::new 引用静态方法 Person::compareByAge 就是引用了一个静态方法。 引用特定对象的实例方法 引用特定类型的任意对象的实例方法 引用构造方法

    22630发布于 2021-03-03
  • 来自专栏java开发的那点事

    03-Java8新特性 方法引用与构造器引用

    方法引用 若 Lambda 体中的内容有方法已经实现了,我们可以使用方法引用 (可以理解为方法引用是 Lambda 表达式的另一种表现形式) 主要三种语法格式 对象::实例方法名 注意:需要函数式接口方法的入参和返回值 == 引用的对象方法的入参和返回值 @Test public void test1(){ Consumer consumer1 = s -> System.out.println(s); consumer2.accept("hello world"); consumer3.accept("hello world"); } 新建类 package com.dance.java8. supplier = person::getName; System.out.println(supplier.get()); } 类::静态方法名 注意:需要函数式接口方法的入参和返回值 == 引用的对象方法的入参和返回值 x.equals(y); // 优化 类::实例方法名 BiPredicate<String,String> biPredicate2 = String::equals; } 构造器引用

    61610编辑于 2021-12-14
  • 来自专栏冰河技术

    【Java8新特性】浅谈方法引用和构造器引用

    写在前面 Java8中一个很牛逼的新特性就是方法引用和构造器引用,为什么说它很牛逼呢?往下看! 方法引用 当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用! 这里需要注意的是:实现抽象方法的参数列表,必须与方法引用方法的参数列表保持一致! 那么什么是方法引用呢?方法引用就是操作符“::”将方法名和对象或类的名字分隔开来。 构造器引用 格式如下所示: ClassName::new 与函数式接口相结合,自动与函数式接口中方法兼容。可以把构造器引用赋值给定义的方法,与构造器参数列表要与接口中抽象方法的参数列表一致! Function<Integer, Integer[]> fun = Integer[]::new; 写在最后 如果觉得文章对你有点帮助,请微信搜索并关注「 冰河技术 」微信公众号,跟冰河学习Java8新特性 最后,附上Java8新特性核心知识图,祝大家在学习Java8新特性时少走弯路。 ?

    51720发布于 2020-10-29
  • 来自专栏Jacob

    JDK 8 新特性 之 方法引用

    概述 ---- 方法引用:当要传递给Lambda体的操作,已经有实现的方法了,就可以使用方法引用 方法引用:在Lambda的基础上进一步的简化。 换句话说,方法引用就是Lambda表达式,也就是函数式接口的一个实例,通过方法的名字来指向一个方法,可以认为是Lambda表达式的一个语法糖。 要求:实现接口的抽象方法体的参数列表和返回值类型,必须与方法引用的方法的参数列表和返回值类型保持一致 使用操作符 :: 将类(或对象)与方法名分割开来 主要分为下面三种使用情况: 对象 :: 实例方法名 public class ServiceTest { public static void main(String[] args) { /** * 1、JDK8 new EmailService().timingSendEamil(); } }).start(); /** * 2、JDK8

    42710发布于 2020-08-04
  • 来自专栏码农小胖哥的码农生涯

    你知道Java 8 的方法引用

    前言 Java中的方法引用,很多同学都见过但却叫不出名字甚至不太会用,在这篇文章中,我们将看到什么是方法引用以及如何使用它。 2. 那么就可以通过方法引用来简化Lambda 表达式。 方法引用 Java 方法引用是Java 8随着Lambda表达式引入的新特性。可以直接引用已有Java类或对象的方法或构造器。方法引用通常与Lambda表达式结合使用以简化代码。 方法引用正确的演变过程 ? 不单纯的Lambda不能使用方法引用 3.1 格式 方法引用的格式为<ClassName | instance>::<MethodName>。 也就是被引用的方法所属的类名和方法名用双冒号::隔开,构造器方法是个例外,引用会用到new关键字,总结了一下: 引用方式 说明 静态方法引用 ClassName :: staticMethodName

    83910发布于 2020-09-10
  • 来自专栏Java大联盟

    Java8新特性:方法引用详解

    Java8 引入了方法引用特性,使用它可以简化 Lambda 表达式,我们知道 Lambda 是用来替代匿名类的,即使用 Lambda 可以更加方便地实现函数接口的方法,如下所示。 test(10,System.out::println); System.out::println 就是方法引用,表示调用 System.out 的 println 方法,方法引用提供了一种引用而不执行方法的方式 简单来说,方法引用本身就是一个 Lambda 表达式,它是一种更加简洁、易读的 Lambda 表达式,通过双冒号 :: 来引用目标方法。 ,这就是方法引用的底层逻辑。 方法引用的具体操作形式有以下四种: 1、引用目标类的静态方法。 2、引用目标对象的实例方法。 3、引用目标类的构造方法。 4、引用目标类型任意对象的实例方法。 接下来我们分别做演示。

    65550发布于 2019-07-19
  • 来自专栏小工匠聊架构

    Java 8 - 06 Lambda 和方法引用实战

    Pre 前几篇文章,我们已经学习了行为参数化、匿名类、Lambda表达式和方法引用,实现了给工程师按照职位排序的功能 enginnerlist.sort(comparing(Enginner::getJob )) 那我们来分解一下,看具体是怎样一步步的实现这么精简的写法的 ---- 第 1 步:传递代码 Java 8的API已经为你提供了一个 List 可用的 sort 方法, 这个是最难的部分,好在不用我们自己写了哈哈哈 java.util.Comparator.comparing; enginnerList.sort(comparing((Enginner e) -> e.getJob())); ---- 第 4 步:使用方法引用 前面解释过,方法引用就是替代那些转发参数的Lambda表达式的语法糖。 这比Java 8之前的代码好在哪儿呢? 短小精悍 言简意赅 ,并且代码读起来和问题描述差不多:对enginnerList按照Job进行排序

    45630发布于 2021-08-17
  • 来自专栏猫头虎博客专区

    JDK8新特性之方法引用

    JDK8新特性之方法引用 最近刚好有空给大家整理下JDK8的特性,这个在实际开发中的作用也是越来越重了,本文重点讲解下方法引用。 方法引用 1. 也是JDK8中的新的语法 printMax(FunctionRefTest02::getTotal); } /** * 求数组中的所有元素的和 * 也是JDK8中的新的语法 2. 方法引用的格式 符号表示::: 符号说明:双冒号为方法引用运算符,而它所在的表达式被称为方法引用 应用场景:如果Lambda表达式所要实现的方案,已经有其他方法存在相同的方案,那么则可以使用方法引用。 常见的引用方式: 方法引用在JDK8中使用是相当灵活的,有以下几种形式: instanceName::methodName 对象::方法名 ClassName::staticMethodName 类名:

    19710编辑于 2024-04-08
  • 来自专栏程序猿DD

    你知道Java 8 的方法引用

    前言 Java中的方法引用,很多同学都见过但却叫不出名字甚至不太会用,在这篇文章中,我们将看到什么是方法引用以及如何使用它。 2. 那么就可以通过方法引用来简化Lambda 表达式。 方法引用 Java 方法引用是Java 8随着Lambda表达式引入的新特性。可以直接引用已有Java类或对象的方法或构造器。方法引用通常与Lambda表达式结合使用以简化代码。 方法引用正确的演变过程 不单纯的Lambda不能使用方法引用 3.1 格式 方法引用的格式为<ClassName | instance>::<MethodName>。 也就是被引用的方法所属的类名和方法名用双冒号::隔开,构造器方法是个例外,引用会用到new关键字,总结了一下: 引用方式 说明 静态方法引用 ClassName :: staticMethodName 

    62420编辑于 2023-04-17
  • 来自专栏代码人生

    JAVA8新特性(三)——方法引用

    我们之前写Lambda表达式,如果Lambda表达式有对应方法,我们可以直接引用方法作为Lambda表达式。这种做法叫做方法引用。方法引用用”::”分隔。 double return1(double i) { return 1 + i; } } 这里doubleSupplier的表达式调用Class1.return1方法,就可以使用方法引用 方法引用有四种 引用静态方法 ContainingClass::staticMethodName 例子: String::valueOf,对应的Lambda:(s) -> String.valueOf :() -> this.toString() 与引用静态方法相比,都换为实例的而已 引用构造函数 ClassName::new 例子: String::new,对应的Lambda:() -> new 引用特定类型的任意对象的实例方法 这个不清楚 例子 public class MethodReference { @Test public void staticMethodRefTest

    42910发布于 2019-10-30
  • 来自专栏Oracle数据库技术

    Oracle PLSQL例8:标识符引用

    /SQL例4:文字(Literals)换行的处理 Oracle PL/SQL例5:注释 Oracle PL/SQL例6:声明变量/常量 Oracle PL/SQL例7:%TYPE 属性 例1:使用名字引用标识符 -- Scope of d ends -- Visible: a (CHAR), b END; -- Scopes of a (CHAR) and b end / 例3:引用子程序 例4:不同单元的引用‍ SQL> DECLARE 2 PROCEDURE p 3 IS 4 x VARCHAR2(1); 5 BEGIN 6 x := 'a'; -- Assign the value 'a' to x 7 DBMS_OUTPUT.PUT_LINE('In procedure p, x = ' || x); 8 DECLARE 3 x NUMBER := 5; 4 5 PROCEDURE echo AS 6 x NUMBER := 0; 7 BEGIN 8

    43440编辑于 2022-12-20
  • 【JDK8 新特性4】方法引用

    上一篇文章 :(16条消息) 【JDK8 新特性3】常用内置函数式接口_一切总会归于平淡的博客-CSDN博客 目录 1、介绍方法引用 1.1 Lambda的冗余场景 1.2 体验方法引用简化Lambda 1.3 方法引用的格式 2、对象名::引用成员方法 3、类名::引用静态方法 4、类名::引用实例方法 5、类名::new引用构造器 6、数组::new 引用数组构造器 7、总结 ---- 1、介绍方法引用 1.3 方法引用的格式 符号表示 : :: 符号说明 : 双冒号为方法引用运算符,而它所在的表达式被称为方法引用。 常见引用方式 方法引用在JDK 8中使用方式相当灵活,有以下几种形式: instanceName::methodName 对象::方法名 。 方法引用的注意事项 被引用的方法,参数要和接口中抽象方法的参数一样 。 当接口抽象方法有返回值时,被引用的方法也必须有返回值。

    33820编辑于 2022-11-07
  • 来自专栏Java技术栈

    JDK8新特性之方法引用

    什么是方法引用 方法引用是只需要使用方法的名字,而具体调用交给函数式接口,需要和Lambda表达式配合使用。 方法引用分类 1、构造器方法引用 格式: Class::new,调用默认构造器。 2、类静态方法引用 格式: Class::static_method 3、类普通方法引用 格式: Class::method,方法不能带参数。 4、实例方法引用 格式: instance::method 示例 往User类添加方法引用方法: public static User create(Supplier<User> supplier){ list.forEach(User::updateUsername); // 3、类普通方法引用 list.forEach(User::updateAge); //

    65350发布于 2018-03-30
  • 来自专栏Java技术栈

    Java 8 中的方法引用,怎么用到最好?

    在Java8中,使用方法引用非常简单,如String::isEmpty,但无法使用它否定的方法引用。本文内容即如何解决此问题使得我们能够更加全面地使用方法引用。 s.isEmpty()).count() Java8中的Predicate,有predicate.negate()可以转换为断言的否定形式,但String::isEmpty却无法这么做(String:: 因为方法引用并不是一个lambda或者函数接口,它能够被解析为一个或者多个函数接口。 ,即可实现方法引用到函数接口的转换。 接着,我们就可以使用方法引用来实现上面例子中的获取非空字符串的数目。

    1.1K20发布于 2020-05-24
领券