Java 8 新特性

Java 8 函数式接口(一) 概述

2021-12-29  本文已影响0人  爱恨_交加

定义

有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

可以在任意函数式接口上使用@FunctionalInterface注解,以检查它是否是一个函数式接口

意义

Lambda表达式配合函数式接口可以写出更加简洁、灵活的代码

简单示例

需求:使用函数式接口和 Lambda 表达式实现对字符串的处理功能。

先定义一个函数式接口

...
@FunctionalInterface
public interface MyStrFunc<T> {
    // 核心方法
    void accept(T t);

    // 默认方法(可以省略)
    default void defaultFunc() {
        System.out.println("不会影响到函数式接口的定义");
    }
    // 静态方法(可以省略)
    static void staticFunc(){
        System.out.println("不会影响到函数式接口的定义");
    }
}

接着定义字符串处理方法并测试其功能

...
public class TestDemo {
    /** 测试 */
    public static void main(String[] args) {
        // 输出字符串长度
        handleString("123456", s -> {System.out.println(s.length());});
        // 输出拼接后的字符串
        handleString("123456", s -> {System.out.println(s + "7890");});
    }
    /** 定义操作方法 */
    public static void handleString(String str, MyStrFunc<String> myStrFunc){
        myStrFunc.accept(str);
    }
}

输出

6
1234567890

在这里,其实 handleString 方法中的代码段myStrFunc.accept(str);相当于 main 方法中的代码段{System.out.println(s.length());}{System.out.println(s + "7890");}

下一节:Java 8 函数式接口(二) 分析、归纳内置的函数式接口

上一篇 下一篇

猜你喜欢

热点阅读