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


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

相关推荐
曹牧6 分钟前
文档格式:OFD
java
豆角焖肉31 分钟前
Maven进阶与搭建私服
java·maven
大不点wow41 分钟前
Java序列化与反序列化:让对象走出JVM
java·开发语言·jvm
止语Lab1 小时前
好的 DX 不等于少写代码——三种语言的摩擦力设计课
后端
吃饱了得干活1 小时前
别再手动解析 LLM 输出了!LangChain 四种结构化输出方案对比
后端·python·langchain
噢,我明白了1 小时前
Java中日期和字符串的处理
java·开发语言·日期
程序员天天困1 小时前
Arthas trace 命令怎么用?一行定位最慢那行代码
jvm·后端
Huiturn1 小时前
GPT 5.6 连续编码 10 小时,纯 Python 啃下 Word 二进制格式——doc2docx 实现拆解
后端
dkbnull1 小时前
Spring Boot请求处理组件对比详解
java·spring boot
jun_bai1 小时前
Orthanc服务器使用java上传dicom影像文件
java·运维·服务器