Java8 中的 UnaryOperator<T> 是一个函数式接口,它代表了一个接受一个参数并返回结果的操作。它接受一个类型为 T 的参数,并返回一个相同类型的结果。
该接口定义了一个名为 apply 的抽象方法,该方法接受一个参数并返回一个结果。在函数式编程中,可以使用该接口来表示一元操作,例如对一个值进行增加、减少、取反等操作。
UnaryOperator<T> 接口通常用于对集合中的元素进行操作,或者对某个对象的属性进行修改。它可以作为方法引用、Lambda 表达式、或者匿名类的实例来使用。
该接口是 java.util.function 包中的一部分,它提供了一系列用于函数式编程的函数式接口,可以方便地进行函数式编程的操作。在实际的开发中,可以使用 UnaryOperator<T> 来简化代码,提高可读性和可维护性。
UnaryOperator 函数式接口定义如下:
package java.util.function;
/**
* 表示对单个操作数进行操作,产生与其操作数类型相同的结果。
* 这是 Function 的特例,用于操作数和结果类型相同的情况。
* 这是一个函数接口,其函数方法是 apply(Object)。
*
* @param <T> 操作数和运算结果的类型
*
* @see Function
* @since 1.8
*/
@FunctionalInterface
public interface UnaryOperator<T> extends Function<T, T> {
/**
* 返回一个一元操作符,该操作符始终返回其输入参数。
*
* @param <T> 操作符的输入和输出类型
* @return 总是返回其输入参数的一元操作符
*/
static <T> UnaryOperator<T> identity() {
return t -> t;
}
}该示例将对输入的字符串使用空格分隔,然后对调两个单词的位置。
package com.hxstrive.jdk8.function_interface;
import java.util.function.UnaryOperator;
/**
* UnaryOperator 函数式接口
* @author hxstrive.com
*/
public class UnaryOperatorDemo {
public static void main(String[] args) {
UnaryOperator<String> unaryOperator = new UnaryOperator<String>() {
@Override
public String apply(String s) {
String[] strs = s.split("\\s+");
return strs[1] + " " + strs[0];
}
};
System.out.println(unaryOperator.apply("hello world"));
}
}运行示例,输出如下:
world hello
package com.hxstrive.jdk8.function_interface;
import java.util.function.UnaryOperator;
/**
* UnaryOperator 函数式接口
* @author hxstrive.com
*/
public class UnaryOperatorDemo2 {
public static void main(String[] args) {
UnaryOperator<String> unaryOperator = s -> {
String[] strs = s.split("\\s+");
return strs[1] + " " + strs[0];
};
System.out.println(unaryOperator.apply("hello world"));
}
}运行示例,输出如下:
world hello