栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java14新特性及代码示例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java14新特性及代码示例

你好啊,我是大阳。

Java 14 于 2020 年 3 月 17 日发布。在这篇文章中,我们将介绍 Java编程语言中添加的一些特性以及一些代码示例。

Java14的主要更新内容如下:

instanceof 的模式匹配(预览版)文本块 (第二次预览)NullPointerExceptions:精确描述哪个变量是nullrecord记录类(预览)switch表达式(标准)

1. instanceof 的模式匹配(预览版)

在 Java 14 中,instanceof运算符已被修改为具有类型的表达式。类型测试模式(在instanceof中使用)由指定类型的描述和单个变量组成。

在下面的代码中,短语String s是类型测试模式:

if (obj instanceof String s) {
    // 这里可以使用s
} else {
    // 这里不能使用变量s
}

2. 文本块 (第二次预览)

Java处理json或者xml文本时,需要多个繁琐的嵌套转义,代码写着费劲,维护更费劲。从Java13开始引入了文本块(Text blocks),上代码:

package cn.dayangshuo;


public class TextBlocks {
    public static void main(String[] args) {
        //需要转义
        String jsonStr = "{"name": "大阳"}";
        //文本块,不需要转义字符
        String textBlocks = """
                {"name": "大阳"}
                """;
        System.out.println(jsonStr);
        System.out.println(textBlocks);
    }
}

3. NullPointerExceptions:精确描述哪个变量是null
package cn.dayangshuo.collectors;


public class NullPointerExceprionsTest {
    //空指针报错
    public static void main(String[] args) {
        User user = null;
        System.out.println(user.getName());
    }

    static class User{
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}

//jdk8的报错信息:
Exception in thread "main" java.lang.NullPointerException
    at cn.dayangshuo.collectors.NullPointerExceprionsTest.main(NullPointerExceprionsTest.java:9)

//jdk14的报错信息:  
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "cn.dayangshuo.collectors.NullPointerExceprionsTest$User.getName()" because "user" is null
    at cn.dayangshuo.collectors.NullPointerExceprionsTest.main(NullPointerExceprionsTest.java:9)

4. record记录类(预览)

传统的Java应用程序通过创建一个类,通过该类的构造方法实例化类,并通过getter和setter方法访问成员变量或者设置成员变量的值。有了record关键字,你的代码会变得更加简洁。

package cn.dayangshuo;


public class NormalEntity {
    public static void main(String[] args) {
        //传统的方式
        User1 user1 = new User1("大阳", 1990);
        System.out.println(user1);
        //reocrd 记录类
        User2 user2 = new User2("大阳", 1990);
        System.out.println(user2);
    }
}


class User1 {
    String name;
    Integer age;
    public User1(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User1[" +
                "name='" + name + ''' +
                ", age=" + age +
                ']';
    }
}

package cn.dayangshuo;

record User2(String name, Integer age) {
    @Override
    public String toString() {
        return "User2[" +
                "name='" + name + ''' +
                ", age=" + age +
                ']';
    }
    @Override
    public boolean equals(Object obj) {
        return false;
    }
    @Override
    public int hashCode() {
        return 0;
    }
}

5. switch表达式(标准)

上代码:

package cn.dayangshuo;


public class OldSwitch {
    public static void main(String[] args) {
        oldSwitch();
        newSwitch();
    }

    private static void oldSwitch() {
        int size = 3;
        String cn = "";
        switch (size) {
            case 1:
                cn = "壹";
                break;
            case 2:
                cn = "贰";
                break;
            case 3:
                cn = "叁";
                break;
            default:
                cn = "未知";
        }
        System.out.println(cn);
    }
    //更清爽
    private static void newSwitch() {
        int size = 3;
        String cn = switch (size) {
            case 1 -> "壹";
            case 2 -> "贰";
            case 3, 4 -> "叁";
            default -> "未知";
        };
        System.out.println(cn);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/776503.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号