Java8新特性

本文深入探讨Java8的关键特性,包括函数式接口、Lambda表达式、Stream API以及多重注解的使用。函数式接口通过@FunctionalInterface声明,支持lambda表达式转换;Lambda表达式简化匿名函数的编写;Stream API提供高效的数据操作方式;多重注解增强代码的灵活性。
摘要由CSDN通过智能技术生成

Java8新特性

https://www.jianshu.com/p/0bf8fe0f153b

  1. 函数式接口 : 有且仅有一个抽象方法,但是可以有多个非抽象方法(静态方法、default方法)的接口,函数式接口可以被隐式转换为lambda表达式。

可以通过在接口上加上@FunctionalInterface 来显示声明这是个函数式接口,这样你多写一个抽象方法的时候,会在编写的时候就开始报错 而当接口中重写了object中的方法,但没有写实现,这个抽象方法不算入有且仅有一个抽象方法里面,比如: @FunctionalInterface public interface Comparator<T> 就有int compare(T o1, T o2); 和 boolean equals(Object obj); 但第二个方法不算入函数式接口中有且仅有一个抽象方法里面 Lambda表达式是如何在java的类型系统中表示的呢?每一个lambda表达式都对应一个类型,通常是接口类型。而“函数式接口”是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。因为 默认方法 不算抽象方法,所以你也可以给你的函数式接口添加默认方法。

  1. 接口的默认方法

  2. Lambda 表达式 (Lambda 表达式里面用到的参数 会被隐式地声明为final)

  3. Stream

是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。对数据进行 Filter**过滤Sort** 排序、**Map** 映射、**Match** 匹配

  1. 方法与构造函数引用 ::

// 前一节中的代码还可以通过静态方法引用来表示:
Converter<String, Integer> converter = Integer::valueOf;
Integer converted = converter.convert("123");
System.out.println(converted);  // 123
  1. 多重注解

        在Java 8中支持多重注解了,先看个例子来理解一下是什么意思。首先定义一个包装类Hints注解用来放置一组具体的Hint注解:
    @interface Hints {
      Hint[] value();
    }
    @Repeatable(Hints.class)
    @interface Hint {
      String value();
    }
    Java 8允许我们把同一个类型的注解使用多次,只需要给该注解标注一下@Repeatable即可。
    例 1: 使用包装类当容器来存多个注解(老方法)
    @Hints({@Hint("hint1"), @Hint("hint2")})
    class Person {}
    例 2:使用多重注解(新方法)
    @Hint("hint1")
    @Hint("hint2")
    class Person {}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值