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


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

相关推荐
bagadesu4 小时前
使用Docker构建Node.js应用的详细指南
java·后端
没有bug.的程序员4 小时前
Spring Cloud Gateway 性能优化与限流设计
java·spring boot·spring·nacos·性能优化·gateway·springcloud
洛_尘5 小时前
JAVA EE初阶 2: 多线程-初阶
java·开发语言
Slow菜鸟5 小时前
Java 开发环境安装指南(五) | Git 安装
java·git
lkbhua莱克瓦246 小时前
Java基础——方法
java·开发语言·笔记·github·学习方法
q***71857 小时前
海康威视摄像头ISUP(原EHOME协议) 摄像头实时预览springboot 版本java实现,并可以在浏览器vue前端播放(附带源码)
java·前端·spring boot
_Jimmy_7 小时前
JUC包里的同步组件主要实现了AQS的哪些主要方法
java
范纹杉想快点毕业7 小时前
《嵌入式开发硬核指南:91问一次讲透底层到架构》
java·开发语言·数据库·单片机·嵌入式硬件·mongodb
勇哥java实战分享7 小时前
第一次用 Ollama 跑视觉模型:Qwen2.5-VL 7B 给了我一个意外惊喜
后端