Java 20和IntelliJ IDEA,一起让开发变得更轻松!

news2025/1/14 0:59:37

IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。

相比之前的一些版本,Java 20 的新增功能相对较少。 它引入了作用域值作为孵化 API,通过在线程内和跨线程共享不可变数据来支持虚拟线程。 在它的第二个预览版中,记录模式改进了对泛型记录模式的支持,并支持在增强 for 语句中使用记录模式。 在它的第四个预览版中,switch 的模式匹配改进了它在处理详尽 switch、简化 switch 标签和推断泛型记录模式的类型实参时的使用。

在 Java 20 的第二个预览版中,Foreign Function & Memory API 继续改进其功能,使 Java 代码能够与 JVM 外部的代码和数据进行对话。 虚拟线程是一种轻量级线程,它将彻底改变您创建多线程应用程序的方式。虚拟线程受结构化并发支持,在最新 Java 版本的另一个预览版中推出。 Vector API 目前处于第五个预览版阶段,可以帮助您在代码中进行矢量计算。

在本文中,我将介绍IntelliJ IDEA在语言功能方面的支持,例如记录模式和 switch 的模式匹配,并将特别介绍最有趣的变化,例如改进了泛型记录模式的类型推断、详尽 switch 语句和表达式,以及增强 for 语句头中的记录模式方面的支持。

IntelliJ IDEA v2023.1正式版下载

IntelliJ IDEA 配置

IntelliJ IDEA 2023.1中提供了对 Java 20 的支持,未来的 IntelliJ IDEA 版本将提供更多支持。

要使用 Java 20 中诸如记录模式和 switch 的模式匹配等新语言功能,请转到 ProjectSettings | Project(项目设置 | 项目),将 Project SDK(项目 SDK)设置为 20,将 Project language level(项目语言级别)设置为 20 (Preview) – Record patterns (second preview), Pattern Matching for switch (fourth preview)

您可以使用系统上已经下载的任意版本 JDK,也可以点击 Edit(编辑),然后选择 Add SDK > Download JDK…(添加 SDK > 下载 JDK…)来下载其他版本,可以从供应商列表中选择要下载的 JDK 版本。

在 Modules(模块)标签页上,确保为模块选择相同的语言级别 – 20 (Preview) – Record patterns (second preview), Pattern Matching for switch (fourth preview)

选择此选项后,可能会出现以下弹出窗口,通知您 IntelliJ IDEA 可能会在后续版本中停止对 Java 预览语言功能的支持。 因为预览功能不是永久性的,并且可能在未来的 Java 版本中发生变化(甚至被移除)。

switch 的模式匹配

在 Java 20 中,switch 的模式匹配已进入第四个预览版阶段。 如果您对模式匹配完全陌生,建议您参见此链接来首先了解 instanceof 模式匹配。 如果您尚不熟悉 switch 的模式匹配,请参见此链接。

Java 20 中对此功能进行了一些更改。 与枚举类结合使用时,如果详尽 switch 语句或 switch 表达式在运行时找不到匹配的标签,则 switch 的模式匹配现在会抛出 MatchException,而不是抛出 ImcompatibleClassChangeError。 Java 20 中此功能的另一个变化是关于 case 标签中泛型记录模式的类型形参推断。

总结

IntelliJ IDEA继续降低开发者使用最新 Java 功能的认知负担, IntelliJ IDEA 2023.1 支持 Java 20 中添加的对“switch 的模式匹配”和“记录模式”等语言功能的更改,这些功能中最有趣的变化是支持在增强 for 语句头中使用记录模式,以及改进了泛型记录模式类型实参的类型推断。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/468095.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript 中函数 柯里化风格的运用

导语 当我第一次看见 柯里化 这个词语的时候,我也表现出一脸懵,在代码程序中,看见这种 “高大上”的一些词汇叫法的时候,下意识的会觉得这个概念很难很深奥,但是当冷静下来,去深究过后,就会发现…

Jetson 学习笔记(十六):使用SDK Manager烧录Jetson Nano

SDK Manager 前期准备开始安装 前期准备 安装VMware虚拟机,Ubuntu系统,VMware tools,然后在Ubuntu中安装Nvidia SDK Manager,最后进行烧录。 VMware、Ubuntu系统以及VMware tools:安装链接Nvidia SDK Manager&#x…

ArcGIS Pro数据

目录 1 数据模型 1.1 矢量数据 1.2 栅格数据 1.2.1 栅格数据用途 1.2.2 影像数据地理属性 1.2.3 影像分辨率 1.2.4 栅格波段 2 常用数据格式 2.1 CAD 2.1.1 CAD格式 2.1.2 CAD要素数据集 2.1.3 CAD要素数据集要素类 2.1.4 ArcGIS Pro支持的AutoCAD和MicroStation要…

为什么Web自动化测试需要掌握多种技能?看完就知道了

B站首推!2023最详细自动化测试合集,小白皆可掌握,让测试变得简单、快捷、可靠https://www.bilibili.com/video/BV1ua4y1V7Db 目录 1.编程语言 2.Web开发知识 3.自动化测试框架 4.版本控制系统 5.数据库基础知识 历史进程:…

详解RocketMQ ACL机制的设计实现原理

一、序言 RocketMQ在4.4版本之后为我们提供了ACL权限校验机制,可以实现针对Topic资源级别的用户访问权限控制,ACL的实现能够在一定程度上保证RocketMQ集群数据的安全性。试想一下,如果没有ACL权限校验,在生产环境上只要部署任意的RocketMQ控制台就可以对topic进行操作,存…

【无人机】无人机平台的非移动 GPS 干扰器进行位置估计的多种传感器融合算法的性能分析(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

如何通过 8 个必备技巧确定工作任务的优先级

你的每项任务都同样紧急吗? 你是否制定了一个简单的待办事项清单,并从头到尾地完成每一项任务? 如果你实际上没有对任务进行优先排序,那么这个项目会被拉长。当你不知道如何根据你或你的团队的效率进度来确定项目的优先次序时&a…

Flutter 透明视频播放插件——基于字节跳动AlphaPlayer

字节跳动:AlphaPlayer GitHub - bytedance/AlphaPlayer: AlphaPlayer is a video animation engine. 关于透明视频 透明视频的播放,对于webm格式的视频,在h5上面是很容易播放的 但是对于android或者flutter来说,尤其flutter的…

PoE、PoE+、PoE++交换机功率用途有何不同

随着网络部署终端的设备越来越多,场景千差万别、布署时间有先有后,因此通过PoE交换机为其远程供电是最佳的选择。我们一般常见的PoE、PoE交换机比较多,PoE目前还有待进一步被人了解,这三款的区别可以从历史进程上来进行总结归纳。…

【linux-进程2】进程控制

🌈环境变量 🍄初识 系统带的命令可以直接运行(ls ll命令等),但是我们自己写的命令必须要带上路径才能运行(./myproc),这是什么原因导致的?如果我们也想自己写的命令直接…

实时数仓--数据实时接入模块相关视频录制完成

数据实时接入部分的视频已于昨晚录制完成,由于视频中涉及实现思路和实现代码都来自生产项目,且经过作者多次熬夜录制完成,所以这套视频需付费观看,介意的朋友请见谅。 具体说明如下: 对《实时数仓架构那些事儿》系列文…

【LeetCode】404. 左叶子之和

1.问题 给定二叉树的根节点 root ,返回所有左叶子之和。 示例 1 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 示例 2 输入: root [1] 输出: 0 提示: 节点数…

day4-中等篇-环形链表2

这是环形链表的升级版,也就是找到尾部连接的第二个节点并返回; 分两步:第一步判断是否有环,第二步找到节点 为什么找到节点是这样?原因是快慢指针相遇之后,慢指针到head的距离和新指针q到head的距离相同&am…

Koa2的基本使用

一、新建一个文件夹 首先打开终端,输入node -V命令检查Node版本,对于Koa2框架需要Node版本高于7.6使用npm init -y这个命令可以快速创建出package.json文件使用npm install koa下载最新版本koa到当前项目 二、初步使用 创建app.js // 创建koa对象 c…

FPGA时序约束(四)主时钟、虚拟时钟和时钟特性的约束

系列文章目录 FPGA时序约束(一)基本概念入门及简单语法 FPGA时序约束(二)利用Quartus18对Altera进行时序约束 FPGA时序约束(三)时序约束基本路径的深入分析 文章目录 系列文章目录前言主时钟约束跨时钟域…

“echo >”和“echo >>”的区别

“echo >”和“echo >>”的区别 命令“echo >”代表输出重定向 命令“echo >>”输出追加重定向 echo hello A 将字符串hello A输出到屏幕 echo hello A > tmp.txt 将字符串输出重定向,当前目录没有tmp.txt,则创建tmp.txt&#xff…

wangEditor5在Vue3中的自定义图片+视频+音频菜单

本文适用于wangEditor5用在Vue3中自定义扩展音频、视频、图片菜单;并扩展音频元素节点,保证音频节点的插入、读取、回写功能正常;支持动态修改尺寸。适用于初学者。 1、官网关键文档。 ButtonMenu:自定义扩展新功能 | wangEdito…

所有Gcc版本对C和C++的支持情况(超详细版本)

在最近接触的新的项目,由于技术使用为C98风格实现,遇到一个问题需要加锁解决,本能反应用lock_guradmutex解决,但是没设置CFLAGS为C11标准,不确定当前gcc编译器默认支持的C和C标准是什么,索性就一把都研究透…

G - 李华和图案

第一周刷题: 【题目描述】 李华有大小的格局nn,每个单元格为蓝色或红色。他可以表演完全k操作。在每次操作中,他选择一个单元格并将其颜色从红色更改为蓝色或从蓝色更改为红色。每个单元格都可以根据需要多次选择。是否有可能使图案与其旋转…

Vue-高德地图-立体多边形绘制

前言 在前端开发中,地图展示是常见的需求之一。而高德地图作为国内知名的地图服务商,其提供的 API 功能丰富,使用也相对简单。 本篇文章将介绍如何在 Vue2 中使用 amap/amap-jsapi-loader 安装高德地图并展示地图。 准备工作 首先需要在高…