<tfoot id='Q0SzF'></tfoot>

  1. <i id='Q0SzF'><tr id='Q0SzF'><dt id='Q0SzF'><q id='Q0SzF'><span id='Q0SzF'><b id='Q0SzF'><form id='Q0SzF'><ins id='Q0SzF'></ins><ul id='Q0SzF'></ul><sub id='Q0SzF'></sub></form><legend id='Q0SzF'></legend><bdo id='Q0SzF'><pre id='Q0SzF'><center id='Q0SzF'></center></pre></bdo></b><th id='Q0SzF'></th></span></q></dt></tr></i><div id='Q0SzF'><tfoot id='Q0SzF'></tfoot><dl id='Q0SzF'><fieldset id='Q0SzF'></fieldset></dl></div>

      <small id='Q0SzF'></small><noframes id='Q0SzF'>

      <legend id='Q0SzF'><style id='Q0SzF'><dir id='Q0SzF'><q id='Q0SzF'></q></dir></style></legend>
        <bdo id='Q0SzF'></bdo><ul id='Q0SzF'></ul>

    1. java中functional interface的分类和使用详解

      时间:2023-12-11

          <tbody id='q5XJE'></tbody>
        • <bdo id='q5XJE'></bdo><ul id='q5XJE'></ul>
          <i id='q5XJE'><tr id='q5XJE'><dt id='q5XJE'><q id='q5XJE'><span id='q5XJE'><b id='q5XJE'><form id='q5XJE'><ins id='q5XJE'></ins><ul id='q5XJE'></ul><sub id='q5XJE'></sub></form><legend id='q5XJE'></legend><bdo id='q5XJE'><pre id='q5XJE'><center id='q5XJE'></center></pre></bdo></b><th id='q5XJE'></th></span></q></dt></tr></i><div id='q5XJE'><tfoot id='q5XJE'></tfoot><dl id='q5XJE'><fieldset id='q5XJE'></fieldset></dl></div>

          <legend id='q5XJE'><style id='q5XJE'><dir id='q5XJE'><q id='q5XJE'></q></dir></style></legend>

          1. <small id='q5XJE'></small><noframes id='q5XJE'>

            <tfoot id='q5XJE'></tfoot>

                Java中Functional Interface的分类和使用详解

                在Java 8中,添加了对函数式编程的支持,也就引入了Functional Interface。Functional Interface是指只包含一个抽象方法的接口,它可以被转换为lambda表达式。在本文中,我们将详细介绍Functional Interface的分类和使用方式。

                Functional Interface的分类

                Supplier

                Supplier是一个不接受任何参数但返回一个值的函数式接口,它的内置函数式接口是java.util.function.Supplier。该接口只有一个方法get(),用于获取一个结果。以下是一个获取当前时间的例子:

                Supplier<LocalDateTime> localDateTimeSupplier = LocalDateTime::now;
                LocalDateTime localDateTime = localDateTimeSupplier.get();
                

                Consumer

                Consumer是一个接受一个参数但没有返回值的函数式接口,它的内置函数式接口是java.util.function.Consumer。该接口只有一个方法accept(T t),用于处理输入参数。以下是一个输出字符串的例子:

                Consumer<String> stringConsumer = System.out::println;
                stringConsumer.accept("Hello, World!");
                

                Function

                Function是一个接受一个参数并返回一个结果的函数式接口,它的内置函数式接口是java.util.function.Function。它包含两个参数TR,分别表示输入和输出类型。该接口只有一个方法apply(T t),用于处理输入参数并返回结果。以下是一个将字符串转换为整数的例子:

                Function<String, Integer> stringToIntegerFunction = Integer::parseInt;
                Integer i = stringToIntegerFunction.apply("123");
                

                Predicate

                Predicate是一个接受一个参数并返回一个布尔值的函数式接口,它的内置函数式接口是java.util.function.Predicate。该接口只有一个方法test(T t),用于处理输入参数并返回结果。以下是一个判断字符串是否为空串的例子:

                Predicate<String> stringPredicate = String::isEmpty;
                boolean isEmpty = stringPredicate.test("");
                

                UnaryOperator

                UnaryOperator是一个接受一个参数并返回与该参数类型相同的结果的函数式接口,它的内置函数式接口是java.util.function.UnaryOperator。它扩展了Function接口,该接口只有一个方法apply(T t),用于处理输入参数并返回结果。以下是一个对整数进行绝对值计算的例子:

                UnaryOperator<Integer> abs = Math::abs;
                int i = abs.apply(-123);
                

                BinaryOperator

                BinaryOperator是一个接受两个参数并返回与该参数类型相同的结果的函数式接口,它的内置函数式接口是java.util.function.BinaryOperator。它扩展了BiFunction接口,该接口只有一个方法apply(T t, U u),用于处理输入参数并返回结果。以下是一个对两个整数进行求和的例子:

                BinaryOperator<Integer> sum = Integer::sum;
                int result = sum.apply(1, 2);
                

                Functional Interface的使用

                除了使用Java内置的函数式接口,我们还可以自定义Functional Interface。在定义自己的Functional Interface时,需要遵循以下规则:

                • 该接口只能包含一个抽象方法
                • 该接口可以包含一个或多个默认方法
                • 该接口可以包含一个或多个静态方法

                以下是一个自定义的Functional Interface的例子:

                @FunctionalInterface
                public interface MyInterface {
                
                    void doSomething();
                
                    default void run() {
                        System.out.println("MyInterface run");
                    }
                
                    static void stop() {
                        System.out.println("MyInterface stop");
                    }
                
                }
                

                我们可以将该接口转换为lambda表达式,并进行使用:

                MyInterface myInterface = () -> System.out.println("hello");
                myInterface.doSomething();   // Output: hello
                myInterface.run();           // Output: MyInterface run
                MyInterface.stop();          // Output: MyInterface stop
                

                另外,当我们需要将Functional Interface转换为具体的类型时,可以使用::符号来指向对应静态方法或构造函数,以下是一个构造函数转换的例子:

                Supplier<Person> personSupplier = Person::new;
                Person person = personSupplier.get();
                

                以上便是Functional Interface的分类和使用详解内容。

                上一篇:java中lambda表达式的分析与具体用法 下一篇:在js与java中判断json数据中是否含有某字段的案例

                相关文章

                <small id='22cfw'></small><noframes id='22cfw'>

                <legend id='22cfw'><style id='22cfw'><dir id='22cfw'><q id='22cfw'></q></dir></style></legend>

                1. <i id='22cfw'><tr id='22cfw'><dt id='22cfw'><q id='22cfw'><span id='22cfw'><b id='22cfw'><form id='22cfw'><ins id='22cfw'></ins><ul id='22cfw'></ul><sub id='22cfw'></sub></form><legend id='22cfw'></legend><bdo id='22cfw'><pre id='22cfw'><center id='22cfw'></center></pre></bdo></b><th id='22cfw'></th></span></q></dt></tr></i><div id='22cfw'><tfoot id='22cfw'></tfoot><dl id='22cfw'><fieldset id='22cfw'></fieldset></dl></div>
                  • <bdo id='22cfw'></bdo><ul id='22cfw'></ul>
                  <tfoot id='22cfw'></tfoot>