Java 中 UnaryOperator 接口与 Lambda 表达式的应用示例

大家好,这里是架构资源栈 !点击上方关注,添加"星标",一起学习大厂前沿架构!

关注、发送C1即可获取JetBrains全家桶激活工具和码!


在 Java 8 引入 Lambda 表达式的过程中,开发者面临了许多新的接口,其中不乏一些看起来颇为学术、难以理解的名称。UnaryOperator 接口就是其中之一,但其实它的用途和实现非常简单。

UnaryOperator 的功能

UnaryOperator 接口的功能就是接收一个对象,处理它后返回相同类型的对象。这个"unary"特性意味着输入和输出的对象类型是相同的。

从技术角度看,UnaryOperator 接口继承了 Function 接口,并且定义了一个名为 apply 的方法。

java 复制代码
java.util.function.UnaryOperator
@FunctionalInterface
public interface UnaryOperator<T> extends Function<T, T> {
    T apply(T t);
}

比如,你可能想从一个对一个字符串做特殊处理后返回新的字符串。这正是 UnaryOperator 的应用场景------输入和输出都是字符串。

UnaryOperator 实现示例

首先来看一个传统的实现方式,我们创建一个类 UnaryOperatorExample 来实现 UnaryOperator 接口,并提供 apply 方法:

java 复制代码
package com.xiaod.lambda;


import java.util.function.UnaryOperator;

public class UnaryOperatorImpl implements UnaryOperator<String> {
    @Override
    public String apply(String name) {
        return name+",财运滚滚!";
    }
}

public class UnaryOperatorImplTest {

    @Test
    public void testUnaryOperatorImpl() {
        UnaryOperatorImpl unaryOperatorImpl = new UnaryOperatorImpl();
        String name = "小D";
        String result = unaryOperatorImpl.apply(name);
        // 小D,财运滚滚!
        System.out.println(result);
    }

}

执行上述代码后,控制台将输出字符串 小D,财运滚滚!

UnaryOperator 的 Lambda 表达式示例

使用 Java 的 Lambda 表达式可以简化代码,不再需要创建完整的类。通过 Lambda 表达式,我们可以直接实现 UnaryOperator 接口:

java 复制代码
@Test
    public void testUnaryOperatorImplLambda() {
        UnaryOperator<String> extensionAdder = (String name) -> { return name+",财运滚滚!";} ;
        String newText = extensionAdder.apply("小D1");
        // 小D1,财运滚滚!
        System.out.println(newText);
    }

Lambda 表达式使得代码更加简洁和紧凑,能够快速传达功能意图。

进一步简化 Lambda 表达式

你还可以进一步简化 Lambda 表达式,省略类型声明,使得代码更加简洁:

java 复制代码
UnaryOperator<String> extensionAdder = text -> text + ".txt";
java 复制代码
@Test
    public void testUnaryOperatorImplLambda1() {
        UnaryOperator<String> extensionAdder = (name)-> name+",财运滚滚!" ;
        String newText = extensionAdder.apply("小D2");
        // 小D2,财运滚滚!
        System.out.println(newText);
    }

Java API 中 UnaryOperator 的应用

UnaryOperator 接口在 Java API 中广泛应用。例如,它作为参数传递给 Stream 类的 iterate 方法。

java 复制代码
static <T> Stream<T> iterate(T seed, UnaryOperator<T> f);

这种方法签名可能对初学者来说比较陌生,但通过 UnaryOperator 的简单示例,我们可以清晰地理解:它只是接收并返回相同类型的数据。Lambda 表达式的引入,使得 Java 编程更简洁易读,也极大提高了开发效率。

总结

通过这个简单的示例,我们深入了解了 UnaryOperator 接口及其在 Java Lambda 表达式中的应用。作为一个功能强大的工具,它简化了 Java 编程的复杂性,使得代码更加简洁和易于维护。


喜欢就奖励一个"👍"和"在看"呗~

相关推荐
互亿无线明明12 小时前
如何为全球业务构建可扩展的“群发国际短信接口”?
java·c++·python·golang·eclipse·php·erlang
Lovely_Ruby13 小时前
前端er Go-Frame 的学习笔记:实现 to-do 功能(三),用 docker 封装成镜像,并且同时启动前后端数据库服务
前端·后端
Lear13 小时前
MySQL配置文件优化详解:提升数据库性能的关键参数配置
后端
写完代码就回家结婚13 小时前
Java函数式编程:用Stream API重构你的代码逻辑
java
光影少年13 小时前
node中的peerDependencie含义
后端·node.js·掘金·金石计划
琢瑜13 小时前
问题1:Oracle Java路径干扰。问题2:环境变量加载顺序问题
java·maven
Yang-Never13 小时前
Open GL ES->以指定点为中心缩放图片纹理的完整图解
android·java·开发语言·kotlin·android studio
编程修仙13 小时前
第十一篇 Spring事务
xml·java·数据库·spring
7哥♡ۣۖᝰꫛꫀꪝۣℋ13 小时前
Spring Boot ⽇志
java·spring boot·后端
清晓粼溪13 小时前
Mybatis02:核心功能
java·mybatis