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 编程的复杂性,使得代码更加简洁和易于维护。


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

相关推荐
卷福同学1 小时前
【养虾日记】Openclaw操作浏览器自动化发文
人工智能·后端·算法
江湖十年2 小时前
Go 并发控制:sync.Pool 详解
后端·面试·go
回到原点的码农3 小时前
Spring Data JDBC 详解
java·数据库·spring
gf13211113 小时前
python_查询并删除飞书多维表格中的记录
java·python·飞书
zb200641203 小时前
Spring Boot 实战:轻松实现文件上传与下载功能
java·数据库·spring boot
一勺菠萝丶3 小时前
Flowable + Spring 集成踩坑:流程结束监听器查询历史任务为空 & 获取不到审批意见
java·数据库·spring
jwn9993 小时前
Spring Boot 整合 Keycloak
java·spring boot·后端
宁波阿成3 小时前
OpenClaw 在 Ubuntu 22.04.5 LTS 上的安装与问题处理记录
java·linux·ubuntu·openclaw·龙虾
mldlds3 小时前
SpringBoot详解
java·spring boot·后端
kang_jin3 小时前
Spring Boot 自动配置
java·spring boot·后端