• JDK17 比较实用的更新


    1 文本块

            JDK17之前在代码中定义json类型字符串,是比较麻烦或者说不美观的,里面包含了各种转义字符,不方便读,且不美观。如下

    1. public void before17() {
    2. String jsonText = "{\n" +
    3. " \"name\": \"二狗子\",\n" +
    4. " \"age\": 18,\n" +
    5. " \"address\": \"北京\"\n" +
    6. "}";
    7. System.out.println(jsonText);
    8. }

    JDK17新增文本块功能,完美的解决了这个问题,现在定义json字符串就比较方便且美观了,如下

    1. public void now17() {
    2. String jsonText = """
    3. {
    4. "name": "二狗子",
    5. "age": 18,
    6. "address": "北京"
    7. }
    8. """;
    9. System.out.println(jsonText);
    10. }

    2 switch 新用法

            老的用法就不展示了,应该没有不熟的吧。。。来吧,展示新的用法

     2.1 yield 关键字实现返回值

    1. private static void switchReturn1(Case case) {
    2. String returnText = switch (case) {
    3. case case1:
    4. yield "这是case1";
    5. case case2:
    6. yield "这是case2";
    7. default:
    8. yield "不知道是啥case";
    9. };
    10. System.out.println(returnText);
    11. }

    2.2 可以使用 莱姆他表达式了

    1. private static void switchReturn2(Case case) {
    2. String returnText = switch (case) {
    3. case case1 -> "这是case1";
    4. case case2 -> "这是case2";
    5. default -> "不知道是啥case";
    6. };
    7. System.out.println(returnText);
    8. }

    3 instanceof 模式匹配

            instanceof最常用的是用来判断Object类型,然后强转具体类型,JDK17之前写法

    1. private static void before17 (Object obj) {
    2. if (obj instanceof Stuent) {
    3. Stuent stuent = (Stuent) obj;
    4. System.out.println("学生姓名是:" + stuent.getName);
    5. }
    6. }

    JDK17 更加简化了,就可以写成下面这种,少了一步强转

    1. private static void before17 (Object obj) {
    2. if (obj instanceof Stuent stuent) {
    3. System.out.println("学生姓名是:" + stuent.getName);
    4. }
    5. }

    4 Stream.toList()

    之前Stream转换成List,需要使用Collectors.toList(),代码非常冗长,如下

    1. private static void before17() {
    2. Stream stream = Stream.of("a", "b", "c");
    3. List stringList = stream.collect(Collectors.toList());
    4. for(String s : stringList) {
    5. System.out.println(s);
    6. }
    7. }

    JDK17就比较简单了

    1. private static void before17() {
    2. Stream stream = Stream.of("a", "b", "c");
    3. List stringList = stream.toList();
    4. for(String s : stringList) {
    5. System.out.println(s);
    6. }
    7. }

    以上就是自认为比较实用的更新

  • 相关阅读:
    Typora打造最适合编程笔记的精美主题(浅色版和修改后的深色版),可自行修改喜欢的样式。
    如何搭建高效安全的eBay测评环境:步骤与要点解析
    Python测试框架Pytest的基础入门
    vmware vcenter conventer 可以转换windows2000的版本有下载链接吗
    k8s 挂载阿里云 oss
    react中useState的值没有改变,而是旧的数值
    【三维地图】开发攻略 —— 详解“GeoJSON”技术和应用场景
    9.基于SpringBoot3+MybatisPlus定制化代码生成器类
    git切换分支
    LCD简介
  • 原文地址:https://blog.csdn.net/yangtuogege/article/details/127655096