跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 卖家故事 > 【JavaSE】JDK17的一些特性

【JavaSE】JDK17的一些特性

时间:2024-04-22 10:02:23 来源:网络cs 作者:言安琪 栏目:卖家故事 阅读:

标签: 特性 
阅读本书更多章节>>>>

前言

springboot3.0开始,已经不⽀持JDK8

选⽤Java17,概括起来主要有下⾯⼏个主要原因

JDK17是LTS(⻓期⽀持版),可以免费商⽤到2029年。⽽且将前⾯⼏个过渡版(JDK9-JDK16) 去其糟粕,取其精华的版本JDK17性能提升不少,⽐如重写了底层NIO,⾄少提升10%起步;⼤多数第三⽅框架和库都已经⽀持,不会有什么⼤坑;

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~



目录

前言

yield关键字

密封类

接口中的私有方法

instanceof


yield关键字

yield关键字,从Java13开始引⼊。yield关键字⽤于从case的代码块中返回值

 简化switch 语句

public static void main(String[] args) { String data = "one" ; int result = switch (data) { case "one"->1; case "two"->2; default->-1; }; System.out.println(result) ;}

利用yield关键字代替->

public static void main(String[] args) { String data = "one" ; int result = switch (data) { case "one" : yield 1; case "two": yield 2; default : yield -1; }; System.out.println(result) ;}

var关键字

从Java10开始,var被引⼊

用于自动推导代码的类型,例如下面代码,编译器会⾃动推断出name是⼀个String类型,age是⼀个int类型。

    public static void main(String[] args) {        var name ="zhangsan";        var age =10;    }

使⽤var可以使代码更简洁。有时候,类型名称可能会⾮常⻓,例如泛型。var就像是⼀个简化器,让 你不必反复写出繁琐的类型名。

例如下面代码中var根据后面的HashMap<String, List<Map<Integer, String>>>()自动推导类型 ,即这里的var代表Map<String, List<Map<Integer, String>>> 类型

public static void main(String[] args) { Map<String, List<Map<Integer, String>>> complexMap = new HashMap<String, List<Map<Integer, String>>>();  var complexMap2 = new HashMap<String, List<Map<Integer, String>>>(); }

注意:

不能使⽤var来声明字段不能使⽤var来声明⽅法参数不能使⽤var来声明⽅法返回类型var声明变量必须初始化,但是不能初始化为null

密封类

用fianl修饰的类不能被继承。

JDK17提供了⼀个新的关键字: sealed .密封类除了可以被该关键字修饰,并且在声明末尾⽤ permits 表⽰要开放给哪些类型。

//这里的sealed表示密封类,与fianl不同的是,它可以使用permits开放给一些类继承sealed class Person permits YL{}//继承的类也要加上密封限制 non-sealed 表⽰不限制non-sealed class YL extends Person{}

注意:

sealed修饰的类必须要有⼦类

使⽤ non-sealed 关键字修饰。表⽰不限制,任何类都可以继承。

未被 permits 允许的类型,则没办法继承

sealed class Animal permits Dog,Cat { public String name; public int age; public void eat() { System.out.println("eat()...."); }}sealed class Cat extends Animal permits OrgCat{ }non-sealed class OrgCat extends Cat { }

接口中的私有方法

Java8,接⼝可以有默认⽅法。Java9之后,可以在接⼝内实现私有⽅法实现。

interface Hello{    //默认方法    default void saySomething(){            }    //私有方法    private void sayEngHello(){        System.out.println("Hello!");    }}

instanceof

if (obj instanceof String) { String str = (String) obj;  ...}

上⾯的instancof语法⼀共做了三件事

判断是否为String类型;如果是,转成String类型;创建⼀个名为str的临时变量;

在JDK16中,使⽤模式匹配思想改进了instanceof⽤法,可以做到以下优化效果:

if (obj instanceof String str) {// obj是否为String类型,如果是创建临时变量str  }

阅读本书更多章节>>>>

本文链接:https://www.kjpai.cn/gushi/2024-04-22/161146.html,文章来源:网络cs,作者:言安琪,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论