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


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

相关推荐
一定要AK2 分钟前
JVM 全体系深度解析笔记
java·jvm·笔记
coder阿龙3 分钟前
基于SpringAI+Qdrant+Ollama本地模型和向量数据库开发问答和RAG检索
java·数据库·spring boot·ai·数据库开发
Gofarlic_OMS3 分钟前
HyperWorks用户仿真行为分析与许可证资源分点配置
java·大数据·运维·服务器·人工智能
徒 花10 分钟前
Python知识学习08
java·python·算法
Lyyaoo.11 分钟前
【JAVA基础面经】== 和 equals() 的区别
java·开发语言·jvm
喵个咪17 分钟前
go-wind-cms 微服务架构设计:为什么基于 Kratos?
后端·微服务·cms
神奇小汤圆23 分钟前
百度面试官:Redis 内存满了怎么办?你有想过吗?
后端
lifallen23 分钟前
Flink Agent:RunnerContext 注入与装配演进分析
java·大数据·人工智能·语言模型·flink
爱丽_25 分钟前
Tomcat 从 Socket 到 Servlet:机制主线、参数调优与线上排障(实战)
java·servlet·tomcat
喵个咪25 分钟前
Headless 架构优势:内容与展示解耦,一套 API 打通全端生态
前端·后端·cms