javaSE- 函数式接口

1- 函数式接口

java.util.function , Java 内置核心四大函数式接口,可以使用lambda表达式。

1.1 函数型接口(function)

基本概念: 只有一个方法的接口

1.1.1 源码分析

1.1.2 代码示例

package cn.guardwhy.juc02;

import java.util.function.Function;
/*
Function 函数型接口,只有一个参数输入,有一个参数输出
只要是函数型接口,都可以用lambda表达式简化
*/
public class Function01 {
    
    
    public static void main(String[] args) {
    
    
        /*Function<String, String> function = new Function<String, String>() {
            @Override
            public String apply(String str) {
                return str;
            }
        };*/

        Function<String, String> function = (str)->{
    
    
            return str;
        };

        // 输出结果
        System.out.println(function.apply("hello world!!!"));
    }
}

1.2 断定型接口(Predicate)

有一个输入参数,返回只有布尔值。

1.2.1 源码分析

/**
 * Represents a predicate (boolean-valued function) of one argument.
 *
 * <p>This is a <a href="package-summary.html">functional interface</a>
 * whose functional method is {@link #test(Object)}.
 *
 * @param <T> the type of the input to the predicate
 *
 * @since 1.8
 */
@FunctionalInterface
public interface Predicate<T> {
    
    

    /**
     * Evaluates this predicate on the given argument.
     *
     * @param t the input argument
     * @return {@code true} if the input argument matches the predicate,
     * otherwise {@code false}
     */
    boolean test(T t);

1.2.2 代码示例

package cn.guardwhy.juc02;

import java.util.function.Predicate;

public class Predicate02 {
    
    
    public static void main(String[] args) {
    
    
        /*Predicate<String> predicate = new Predicate<String>() {
            @Override
            public boolean test(String str) {
                return str.isEmpty();
            }
        };*/

        Predicate<String> predicate = str->{
    
    
            return str.isEmpty();
        };

        System.out.println(predicate.test(" ")); // false
    }
}

1.3 消费型接口(Consumer)

有一个输入参数,没有返回值。

1.3.1 源码分析

1.3.2 代码示例

package cn.guardwhy.juc02;

import java.util.function.Consumer;
/*
Consumer消费型接口:只有输入,没有返回值
*/
public class ConsumerDemo03 {
    
    
    public static void main(String[] args) {
    
    
        /*Consumer<String> consumer = new Consumer<String>() {
            @Override
            public void accept(String str) {
                System.out.println(str);
            }
        };*/

        Consumer<String> consumer = str->{
    
    
            System.out.println(str);
        };
        consumer.accept("hello world!!!");
    }
}

1.4 供给型接口

没有输入参数,只有返回参数。

1.4.1 源码分析

1.4.2 代码分析

package cn.guardwhy.juc02;

import java.util.function.Supplier;
/*
Supplier 供给型接口,没有参数,只有返回值。
*/
public class SupplierDemo04 {
    
    
    public static void main(String[] args) {
    
    
        /*Supplier supplier = new Supplier<Integer>() {
            @Override
            public Integer get() {
                System.out.println("get()方法");
                return 666;
            }
        };*/

        // 表达式
        Supplier supplier = ()->{
    
    
            return 666;
        };
        System.out.println(supplier.get());
    }
}

猜你喜欢

转载自blog.csdn.net/hxy1625309592/article/details/114117217