问题标签 [java-record]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 14 记录和数组
给定以下代码:
显然,使用了数组的toString
,equals
方法(而不是静态方法Arrays::equals
,Arrays::deepEquals
或Array::toString
)。
所以我猜Java 14 Records(JEP 359)不能很好地处理数组,必须使用IDE生成相应的方法(至少在IntelliJ中,默认情况下会生成“有用”的方法,即它们使用静态方法中Arrays
)。
或者有没有其他解决方案?
java - 如何记录 Java Record 参数?
应该如何记录Java Record参数?我指的是最终成为构造函数参数的参数,类字段。
我试过了:
但 IntelliJ IDEA@param
将 s 标记为错误。我找不到一个关于这应该如何工作的在线示例。我发现的最接近的讨论是https://bugs.openjdk.java.net/browse/JDK-8225055。
我在 JDK 中发现了一些单元 测试,似乎暗示这应该可以工作。也许这是一个IDE错误?
我正在使用 OpenJDK 14+36-1461,IDEA 2020.1。
为了以防万一,我提交了一份针对 IDEA 的错误报告。
java - 在 Java 14 中定义 Records 类(JEP 359:Records(Preview))的括号内空格的 IntelliJ 编辑器代码样式设置?
我正在使用 IntelliJ 2020.1.1 RC,它应该支持在 Java 14 中预览的记录功能。(请参阅JEP 359:记录(预览))
我找不到在类定义的括号内放置空格的设置record
。
示例代码:
Java 代码样式的 IntelliJ 首选项的屏幕截图。
java - 带有 Java 14 的 IntelliJ 2020.1 中的“记录”预览功能在 Maven“安装”期间因编译器错误而失败,但以其他方式运行
我正在尝试将JEP 359: Java 中的记录(预览)功能与IntelliJ 2020.1.1 RC 一起使用。
我定义了一个这样的类:
当我使用这个类在另一个类中运行 main 方法时LocalTimeRange
,没问题。
当我做一个 Maven 时install
,我得到这个错误:
错误:(6,8)java:记录是预览功能,默认情况下被禁用。
➥ 如何帮助 Maven 完成install
操作?
我使用了Maven Quickstart Archetype 1.4 版。然后我编辑了 POM 以使用其各种依赖项的所有最新版本。
我有“项目结构”设置:
项目设置 > 项目 > 项目 SDK > 14
项目设置 > 项目 > 项目语言级别 > 14(预览) - 记录、模式、文本块
项目设置 > 模块 > 项目语言级别 > 14(预览) - 记录、模式、文本块
我有“首选项”设置:
构建、执行、部署 > 编译器 > Java 编译器 > 每模块字节码版本 > 目标字节码版本 > 14
运行这个Java:openjdk 14.0.1 2020-04-14 OpenJDK Runtime Environment AdoptOpenJDK (build 14.0.1+7) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 14.0.1+7,混合模式,共享)
使用:
IntelliJ IDEA 2020.1.1(终极版)
构建 #IU-201.7223.58,建于 2020 年 4 月 26 日
订阅有效期至 2020 年 8 月 28 日
运行时版本:11.0.6+8-b765.40 x86_64
虚拟机:JetBrains sro macOS 10.14.6 的 OpenJDK 64 位服务器虚拟机
GC:ParNew、ConcurrentMarkSweep
内存:2200M
核心:6
非捆绑插件:com.github.leomillon.uuidgenerator
java - jlink:ed 应用程序中的记录引发异常
在 jlink:ed 应用程序中使用记录(预览功能 java-14),使用选项时会出现以下错误:
java - 您是否需要为记录覆盖 hashCode() 和 equals()?
假设以下示例:
我是否需要覆盖hashCode
,equals
如果我要将所述对象添加到 a 中HashMap
?
java - Java 14 Record 文档中“浅不可变”的含义
我正在阅读Records的文档, 但不理解“浅不可变”一词。浅不可变是什么意思?如果它是不可变的,为什么我们需要一个复制构造函数?为什么是两个“Hello Worlds!”?
对于所有记录类,以下不变量必须保持:如果记录 R 的组件是 c1、c2、...cn,那么如果记录实例被复制如下:
那么它一定是这样的r.equals(copy)
。
java - Java 记录 StackOverflow RuntimeException
我正在学习 Java 记录、预览功能,并且在运行以下代码时遇到 StackOverflow 异常。
从异常中,我意识到它与 toString() 有关,当我在记录中覆盖 toString() 时,如下代码所示,我看不到 Exception 。
此代码打印 John : Enrolled for Math,Enrolled for History 。有人可以解释为什么如果我不覆盖 toString() 我会得到 StackOverflow?我在打印时也看到了 StackOverflowjohn.hashCode()
java - Java 记录数据类型不适用于网络通信
我认为 Java 14 中新的 Java Record 数据类型应该适合跨网络的数据,因为数据不应该在过程中发生变化,这是记录数据类型的主要特征 - 不可变。
我使用 RSocket 中的数据类型。在发送方,我收到编码器错误。我还没有找到编码器是关于什么的。在接收方,我得到一个解串器错误。据我所知,记录无法实现诸如 Serializable 之类的接口。
所以,记录数据类型不适用于网络编程,对吗?
更新:
我将 Serializable 接口添加到发送方和接收方的记录定义中。发出请求后,TCP发送端正常,接收端出错
标记这个问题的人有不同的经历吗?