大家好,这里是架构资源栈 !点击上方关注,添加"星标",一起学习大厂前沿架构!
关注、发送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 编程的复杂性,使得代码更加简洁和易于维护。
喜欢就奖励一个"👍"和"在看"呗~
