Photo by Lorem Ipsum
499 words
2 minutes
Java SE 系列(十):Java8 新特性
Java SE 教程
Posts in this series (10)AI 智能总结
Java8 新特性:Lambda、函数式接口、Stream、Optional
Java8 是里程碑版本,核心四大特性大幅简化代码、消灭冗余模板代码,是日常开发、框架源码的主流写法。
一、函数式接口
仅有一个抽象方法的接口,是 Lambda 表达式的前提。 核心注解 @FunctionalInterface,用于校验接口合法性。 常用内置接口:
Consumer消费型:无返回值Supplier供给型:无参数有返回值Function函数型:有参数有返回值Predicate断言型:返回布尔值
// Consumer:接收参数消费,无返回Consumer<String> printer = s -> System.out.println(s);printer.accept("Hello");
// Supplier:提供对象,无参数Supplier<Double> random = () -> Math.random();Double num = random.get();
// Function:转换,输入一个出一个Function<Integer, String> int2Str = i -> String.valueOf(i);String s = int2Str.apply(100);
// Predicate:条件判断,返回布尔Predicate<Integer> isPositive = i -> i > 0;boolean result = isPositive.test(5);二、Lambda 表达式
简化函数式接口的匿名内部类写法,语法:(参数) -> {代码体}
// 传统写法new Runnable(){ @Override public void run() { System.out.println("传统线程"); }};
// Lambda极简写法new Thread(() -> System.out.println("Lambda线程")).start();三、Stream 流式编程
用于集合数据链式处理,替代循环遍历,代码简洁优雅。 分为三步:获取流 → 中间操作 → 终止操作
- 中间操作:过滤、排序、映射(延迟执行)
- 终止操作:触发执行、收集结果
List<String> list = Arrays.asList("Java","Python","Go");// 过滤长度大于3的元素并收集List<String> res = list.stream() .filter(s -> s.length() > 3) .collect(Collectors.toList());System.out.println(res);四、Optional 空安全工具
杜绝 NullPointerException,优雅处理空对象判断。
String str = null;// 空值安全获取,为空返回默认值String result = Optional.ofNullable(str).orElse("默认值");System.out.println(result);核心总结
- 函数式接口是 Lambda 的基础,单一抽象方法是硬性规则。
- Lambda 简化匿名内部类,让代码更精简,只关注核心逻辑。
- Stream 替代传统 for 循环,链式操作高效处理集合数据。
- Optional 规避空指针异常,摒弃繁琐的
if(null != obj)判断。
Java SE 系列(十):Java8 新特性
https://fuwari.vercel.app/posts/java-se-series/java-se-10-java8/