Java8 教程

Java8 内置函数式接口 UnaryOperator

Java8 中的 UnaryOperator<T> 是一个函数式接口,它代表了一个接受一个参数并返回结果的操作。它接受一个类型为 T 的参数,并返回一个相同类型的结果。

该接口定义了一个名为 apply 的抽象方法,该方法接受一个参数并返回一个结果。在函数式编程中,可以使用该接口来表示一元操作,例如对一个值进行增加、减少、取反等操作。

UnaryOperator<T> 接口通常用于对集合中的元素进行操作,或者对某个对象的属性进行修改。它可以作为方法引用、Lambda 表达式、或者匿名类的实例来使用。

该接口是 java.util.function 包中的一部分,它提供了一系列用于函数式编程的函数式接口,可以方便地进行函数式编程的操作。在实际的开发中,可以使用 UnaryOperator<T> 来简化代码,提高可读性和可维护性。

UnaryOperator 定义

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;
   }
}

UnaryOperator 示例

该示例将对输入的字符串使用空格分隔,然后对调两个单词的位置。

匿名类实现方式

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

Lambda实现方式

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
说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号