JDK14中record实践尝鲜

Posted java技术大本营

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK14中record实践尝鲜相关的知识,希望对你有一定的参考价值。

他来了他来了,小刀终于更新了

按道理讲啊,其实也不算晚吧, 因为之前写过一篇jdk14中 jpackage命令的使用. 原文如下:


今天,我们不仅仅是介绍新特性,还要实践起来!

好,下面我们就进入今天的主题-jdk14中的record的使用!!

创不易, 在看吧!!!!  小刀这里谢谢您啦!!


使用形式

其实要是看代码编写的话,就一行

// 定义record Image(@SerializedName("media_id") String mediaId){}// 使用Image image = new Image("传mediaId");// 取里面的值image.mediaId();

如上我定义了一个record,Image,里面有一个String mediaId 那按以前的写法呢,大致是这样的

static class ImageClass{ // 定义一个属性 private String mediaId; // 定义一个构造函数 public ImageClass(String mediaId) { this.mediaId = mediaId; } // 定义一个get方法 public String getMediaId() { return mediaId; } }

  但是现在!!! 现在只要一行就可以搞定了!!!  真得是相见恨晚的感觉啊!!!

(话说,,我们公司现在连jdk11还没有上,你们呢? )

运行配置

因为这个功能还在预览当中,所以需要一些额外的配置才能跑起来

idea

idea 需下载2020.1 RC 版本,然后在项目设置中,选择语言级别为14-preview,如下图所示

gradle

gradle需要升级到 6.3 及以后才支持jdk14, maven未验(已经很久没用maven了,gradle真香)

可使用如下命令进行升级:

./gradlew wrapper --gradle-version=6.3

build.gradle

在gradle的脚本文件中需要添加如下配置

tasks.withType(JavaCompile) { options.compilerArgs += "--enable-preview"}
tasks.withType(Test) { jvmArgs += "--enable-preview"}
tasks.withType(JavaExec) { jvmArgs += '--enable-preview'}

最后一步把fastJson换成gson

下面我们用一个main函数演示一下

public static void main(String[] args) { record OutRecord(String name){ } OutRecord outRecord = new OutRecord("xiaodao"); // 直接对record序列化,都没有结果 Gson gson = new Gson(); System.out.println("gson:"+gson.toJson(outRecord)); System.out.println("fastJson:"+JSON.toJSONString(outRecord));
// 外面用个类包装一下 Holder holder = Holder.init("xiaodao"); System.out.println("gson:"+gson.toJson(holder)); System.out.println("fastJson:"+JSON.toJSONString(holder)); } // 来于包装的类 static class Holder{ // 声明一个record InnerRecord record; // 定义一个record record InnerRecord(String name){}
/** * 推荐这种实例过种封状在类里面的写法 * @param name * @return */ public static Holder init(String name){ Holder holder = new Holder(); InnerRecord innerRecord = new InnerRecord(name); holder.record = innerRecord; return holder; } }

输出结果如下:

JDK14中record实践尝鲜

可以看到,不管是直接record还是外面有包装类的情况下, fastJson都不能序列化,但gson可以在外面有包装类的情况下进行序列化

撒花撒花! 本篇完结

关于record, 小刀觉得还是挺好用的, 只作值对象的话,几乎可以取代静态内部类了,代码简洁.嗯,,,可以自己实践下哦

今年的大环境确实不好, 不仅仅是应届的不好找工作, 我们在职的也天天提心吊胆. 但是呢, 这又不能和别人说,只能自己背负着前行, 别都压在自己心里了,来这里说一说吧. 全匿名的世界, 不用担心别人怎么看你, 你就是你, 心友们都在这等你❤️

交易担保 凑心 你就是你!


原创不易, 帮忙点个在看吧!!!!  小刀这里谢谢您啦!!


以上是关于JDK14中record实践尝鲜的主要内容,如果未能解决你的问题,请参考以下文章

Github移动端,IDEA 2019.3.4,JDK 14,都发布了,赶快尝鲜

JDK14的新特性:Lombok的终结者record

JDK的主要新特性 - Java 14

Android - 如何录制简单的声音片段?

JDK 14的新特性:instanceof模式匹配

我还在生产玩 JDK7,JDK 15 却要来了!|新特性尝鲜