java新特性

47 阅读2分钟

Java8新特性

对接口做了增强

  • 引入了静态方法和实例方法
    • default:允许在接口中定义带有具体实现的方法,使用default关键字修饰,可以this调用,可以被子类继承或重写。
    • static:允许在接口中定义静态方法,使用static关键字修饰,类中的方法能被继承而接口中的方法不能被子类继承,只能用interface调用。
    • 函数式接口:支持了Lambda表达式,推动函数式编程规范。

函数式接口

定义:也称SAM接口,Single Abstract Methods interfaces。有且只有一个抽象方法,但可以有多个非抽象方法的接口。java8中的java.util.function专门放函数式接口,这个包下的所有接口都带有@FunctionalInterface注解,提供函数式编程。

Lambda表达式

允许将函数作为参数进行传递,(参数 -> 返回参数要变成的样子)例如(a, b) -> a + b 就是返回a + b

(parameters) -> expression 或
(parameters) ->{ statements; }

只要方法的参数是函数式接口都可以使用Lambda表达式,lambda优点很多,但当调试的时候因为lambda是匿名的所以不知道是哪个lambda出问题了。

Stream流常用API

//收集长度大于3的字符串
List<String> originalList = Arrays.asList("apple", "fig", "banana", "kiwi");
List<String> filteredList = originalList.stream()
                                        .filter(s -> s.length() > 3) 
                                        .collect(Collectors.toList());
  • Stream的并行Api
    • ParallelStream,并行流就是将数据源分为多个子流对象进行多线程操作,然后再将流汇成一个总流对象,对CPU密集型操作来说友好。

java21新特性

语言特性

  • 允许在switch的case语句中进行模式匹配 case savingsAccount sa -> result = sa.getSavings();
  • 数组模式 将模式匹配引用到数组里 if (arr instanceof int[] {1, 2, 3})

并发特性

  • 虚拟线程 通过共享堆栈的方法,大大降低内存的消耗,可以使用静态构建方法、构建器或ExecutorService来创建和使用虚拟线程。