Java 8

Java 8 Feature

一、函数式接口

1.1 常用函数式接口

接口名称 方法名称 接收的参数类型 返回类型
Predicate test T boolean
Consumer accept T void
Function apply T R
Supplier get void T

使用函数是变成会有自动拆箱和装箱的过程,装箱需要把基本类型包裹起来,并保存在堆中,所以装箱后需要更多的内存

如果想要避免拆箱和装箱操作,可以使用针对专门的输入参数类型的函数是接口,例如IntPredicat、IntFunction、IntToDoubleFunction等等

细节

  • Java 8 提供的函数式接口是不允许抛出Exception及其子(checked exception),如果想要抛出异常有两种方法

    • 定义一个自己的函数式接口,并抛出异常

      • @FunctionalInterface
        public interface BufferedReaderProcessor {
            String process(BufferedReader b) throws IOException;
        }
        
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11

        + 在使用的时候将Lambda包裹在try/catch块中:

        + ```java
        Function<BufferedReader, String> f = (BufferedReader bf) -> {
        try {
        return b.readLine();
        } catch(IOException) {
        throw new RuntimeException(e);
        }
        }

Java 8
https://tftisa.top/2024/07/10/Java 8/
作者
tf
发布于
2024年7月10日
许可协议