Java JDK8到21演升特性汇总

本文概述了JavaJDK8到19的主要升级特性,包括接口的默认方法和静态方法、Lambda表达式、StreamAPI、Optional类、方法引用、重复注解、JDK17的新语言增强和库更新,以及JDK21的高级特性如StringTemplates、SequencedCollections和VirtualThreads。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java JDK 8 到 19 演升特性汇总

一、版本roadmap图


Oracle Java SE Support Roadmap
官方地址
JDK8,JDK11,JDK17,JDK21是长期维护的版本。spring boot3最低支持JDK17。

二、版本与特性

JDK8 [2014-03-18]

1、语言新特性
1.1接口新增默认方法与静态方法:
Interface Default Method:For creating a default method in java interface, we need to use “default” keyword with the method signature.
Interface Static Method:interface static method is similar to default method except that we can’t override them in the implementation classes.

1.2 Functional Interfaces函数式接口
含有一个显式声明函数(抽象方法)的接口称为函数接口,注释@FunctionalInterface用作检查代码块,包package java.util.function,通常使用lambda expressions来实体化函数接口。
函数式接口:函数形接口 、供给形接口、消费型接口、判断型接口。

1.2 Lambda表达式
语法:( object str,…)[参数列表] ->[箭头符号] 代码块或表达式。
特性:Lambda 的类型是从使用 Lambda 的上下文推断出来的。上下文中 Lambda 表达式需要的类型称为目标类型(一个 Lambda表达式所在的类的类型。并且必须存在一个目标类型); 匿名、函数、传递、简洁。

 Arrays.sort(new SysUser[5], (SysUser a, SysUser b) -> {
   
            return a.getUserId().compareTo(b.getUserId());
 });

1.3 方法引用
方法引用操作符“::”,左边是类名或者某个对象的引用,右边是方法名,有下面几种方式:
(1)对象(引用)::实例方法名 new SysUser()::getUserName
(2)类名::静态方法名 Function<Long, Long> f = Math::abs;
(3)类名::实例方法名 SysUser::getUserName
(4)类名::new SysUser::new
(5)类型[]::new Function<Integer, SysUser[]> funUsers = SysUser[]::new;

1.4 重复注解@Repeatable
重复注解机制,相同的注解可在同一地方声明多次.

@Repeatable(Annotations.class) 
public @interface MyAnnotation {
     
     String role();  
}  
public @interface Annotations {
     
    MyAnnotation[] value();  
}  
public class RepeatAnnotationUseOldVersion {
     
	@MyAnnotation(role="Admin")  
    @MyAnnotation(role="Manager")
    public void doSomeThing(){
     
    }  
} 

对比以前jdk8的注解实现:

public @interface MyAnnotation {
     
     String role();  
}  
public @interface Annotations {
     
    MyAnnotation[] value();  
}  

public class RepeatAnnotationUseOldVersion {
     
    @Annotations({
   @MyAnnotation(role="Admin"),@MyAnnotation(role="Manager")})  
    public void doSomeThing(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值