`

Lambda Expression - Method Reference

    博客分类:
  • FP
 
阅读更多

原创转载请注明出处:http://agilestyle.iteye.com/blog/2424849

 

Examples of lambdas and method reference equivalents

 

There are three main kinds of method references:

1. A method reference to a static method

(for example, the method parseInt of Integer, written Integer::parseInt)

2. A method reference to an instance method of an arbitrary type

(for example, the method length of a String, written String::length)

3. A method reference to an instance method of an existing object

(for example, suppose you have a local variable expensiveTransaction that holds an object of type Transaction, which supports an instance method getValue; you can write expensiveTransaction::getValue)

 

e.g.

package org.fool.java8;

import java.util.function.BiFunction;
import java.util.function.BiPredicate;
import java.util.function.Function;
import java.util.function.Supplier;

public class MethodReferenceTest {
    public static void main(String[] args) {
        /*
         * A method reference to a static method
         */
        Function<String, Integer> function1 = Integer::parseInt;
        Integer result1 = function1.apply("123");
        System.out.println(result1);

        /*
         * A method reference to an instance method of an arbitrary type
         */
        BiPredicate<String, String> predicate = String::endsWith;
        boolean result2 = predicate.test("hello", "world");
        System.out.println(result2);

        /*
         * A method reference to an instance method of an existing object
         */
        Person person = new Person("zhangsan", 18);
        Supplier<String> result3 = person::getName;
        System.out.println(result3.get());

        /**
         * BiFunction只接收 2 个参数
         */
        BiFunction<String, Integer, Person> function = Person::new;
        Person person1 = function.apply("zhangsan", 18);
        System.out.println(person1);

        /**
         * TriFunction 自定义实现接收 3 个参数
         */
        TriFunction<String, Integer, String, Person> triFunction = Person::new;
        Person person2 = triFunction.apply("lisi", 28, "female");
        System.out.println(person2);
    }

    @FunctionalInterface
    public interface TriFunction<T, U, O, R> {
        R apply(T t, U u, O o);
    }

    private static class Person {
        private String name;
        private Integer age;
        private String sex;

        public Person(String name, Integer age) {
            this.name = name;
            this.age = age;
        }

        public Person(String name, Integer age, String sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Integer getAge() {
            return age;
        }

        public void setAge(Integer age) {
            this.age = age;
        }

        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ", sex='" + sex + '\'' +
                    '}';
        }
    }
}

 Console Output

123
false
zhangsan
Person{name='zhangsan', age=18, sex='null'}
Person{name='lisi', age=28, sex='female'}

 

 

 

 

  • 大小: 17.6 KB
分享到:
评论

相关推荐

    放任Lambda-Lisp 50年Let Over Lambda -- 50 Years of Lisp

    本书旨在突破我们对编程知识的界限。 如果您想知道Lisp甚至编程本身的真正含义,这就是您一直在寻找的书。

    Lambda22-DEMO-PC-041012

    Lambda22-DEMO-PC-041012是一个与Lambda工具相关的演示版本,适用于个人计算机。从描述中可以看出,它可能是一款软件或应用,需要通过特定的安装过程来部署。安装注册码899999999XXXXXXXXXXXEXX9CD7XCXBXW8XXC88VX...

    开源项目-mtojek-aws-lambda-go-proxy.zip

    开源项目-mtojek-aws-lambda-go-proxy.zip,mtojek/aws-lambda-go-proxy: Pass Lambda events to the application running on your machine | Debug real traffic locally | Forget about redeployments

    The LAMBDA-Method: Matlab Implementation

    综上所述,文档中关于"The LAMBDA-Method: Matlab Implementation"的知识点涉及到GPS定位中的整数模糊度解决、LAMBDA方法的原理和步骤、Matlab实现的历史和版本更新,以及Matlab代码的优化和改进。这一系列知识点...

    PyPI 官网下载 | cdk-lambda-extensions-0.1.232.tar.gz

    **PyPI 官网下载 | cdk-lambda-extensions-0.1.232.tar.gz** 这个资源是Python开发者常用的工具,源自Python Package Index(PyPI)官方网站。PyPI是Python社区的一个重要组成部分,它提供了众多开源Python库的存储...

    lambda-refarch-mobilebackend, 用于创建移动后端的无服务器参考架构.zip

    lambda-refarch-mobilebackend, 用于创建移动后端的无服务器参考架构 无服务器参考体系结构: 移动后端README Languages Languages | | | | TW TW TW TW TW 。简介移动后端参考架构( 图 ) 演示如何使用 AWS Lambda ...

    C++ Lambda Story - From C++98 to C++20.pdf

    **C++ Lambda表达式**是C++编程语言中一个强大的特性,从C++11标准开始引入,到C++20标准进一步增强。Lambda表达式允许程序员在代码中定义匿名函数,即没有名称的函数,这极大地提高了代码的灵活性和可读性。本书...

    ASP.NET-MVC-Lambda-Expression-Helpers:为 ASP.NET MVC 5 项目提供强类型链接生成的一组扩展方法

    ASP.NET-MVC-Lambda-Expression-Helpers - 类型化为 ASP.NET MVC 生成链接 ==================================== 允许在 ASP 中使用 Lambda 表达式而不是魔术字符串的扩展方法.NET MVC 5 应用程序。 它解析所有路由...

    Python库 | lambdachain-0.1.tar.gz

    lambda arguments: expression ``` 它创建了一个没有名称的函数,该函数接受一个或多个参数,并返回由表达式计算的结果。Lambda函数通常用于需要短小、临时的函数场合,避免了为简单操作定义整个函数的麻烦。 **...

    Lambda表达式--凌尘.pptx

    【Lambda 表达式】是 Java 8 中的一项重大新特性,它引入了一种更为简洁的函数式编程风格。Lambda 表达式本质上是一个没有名字的函数,允许我们将代码作为一个对象进行传递。这种功能使得 Java 的语言表达能力得到...

    PyPI 官网下载 | lambda-project-creator-0.0.4.tar.gz

    标题中的"PyPI 官网下载 | lambda-project-creator-0.0.4.tar.gz"表明这是一个在Python Package Index(PyPI)上发布的项目,名为`lambda-project-creator`,版本为0.0.4,且已打包成tar.gz格式。PyPI是Python社区...

    PyPI 官网下载 | cdk-lambda-layer-zip-0.0.4.tar.gz

    标题中的“PyPI 官网下载 | cdk-lambda-layer-zip-0.0.4.tar.gz”表明这是一个从Python Package Index(PyPI)官方源下载的软件包,名为"cdk-lambda-layer-zip",版本号为0.0.4,并且已经被打包成tar.gz格式。...

    PyPI 官网下载 | aws-lambda-rest-api-1.0.7.tar.gz

    标题中的"PyPI 官网下载 | aws-lambda-rest-api-1.0.7.tar.gz"指的是一个在Python Package Index(PyPI)上发布的开源软件包。PyPI是Python开发者发布自己编写的Python模块和库的地方,使得全球的Python用户可以方便...

    aws-lambda-go-api-proxy:lambda-go-api-proxy可以轻松移植使用Go框架编写的API,例如Gin(https

    借助aws-lambda-go-api-proxy,可以轻松运行使用框架编写的Golang API,例如使用AWS Lambda的和Amazon API Gateway编写的框架。 入门 第一步是安装所需的依赖项 # First, we install the Lambda go libraries $ go ...

    aws-lambda-local, 在本地运行自动气象站的Lambda函数.zip

    aws-lambda-local, 在本地运行自动气象站的Lambda函数 aws-lambda-local在本地运行 AWS Lambda函数 ! 最轻量的库- 没有外部依赖关系。 少于 200行代码。Windows,Mac和Linux测试 !安装npm install -g aws-lambda-...

    aws-lambda-send-ses-email, 使用Amazon发送电子邮件的AWS Lambda函数.zip

    aws-lambda-send-ses-email, 使用Amazon发送电子邮件的AWS Lambda函数 aws-lambda-send-ses-email使用Amazon发送电子邮件的AWS Lambda函数。这个功能的主要目的是提供一个服务器端后端来发送来自 static 网站的电子...

    Python库 | aws-cdk.aws-lambda-event-sources-0.31.0.tar.gz

    《Python库aws-cdk.aws-lambda-event-sources-0.31.0:构建云原生应用的强大工具》 在当今的IT行业中,云计算已经成为了技术发展的主流趋势,而AWS(Amazon Web Services)作为全球领先的云服务提供商,其提供的CDK...

    Python库 | cdk-lambda-extensions-0.1.99.tar.gz

    《Python库深度解析:cdk-lambda-extensions-0.1.99》 在Python的世界里,库是开发者的重要工具,它们提供了丰富的功能,帮助我们高效地完成各种任务。今天我们将聚焦于一个名为"cdk-lambda-extensions"的Python库...

    PyPI 官网下载 | lambda-notebook-0.6.8.tar.gz

    《PyPI上的lambda-notebook-0.6.8.tar.gz:Python在云原生环境中的分布式探索》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了丰富的Python库供用户下载和使用。标题提到的“lambda-notebook-...

    PyPI 官网下载 | lambda-layer-0.0.4.tar.gz

    《PyPI官网下载 | lambda-layer-0.0.4.tar.gz——Python库解析与应用》 PyPI(Python Package Index)是Python社区的核心资源库,它提供了大量的Python库供开发者下载和使用。"lambda-layer-0.0.4.tar.gz" 是一个在...

Global site tag (gtag.js) - Google Analytics