问题标签 [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.

0 投票
3 回答
5087 浏览

java - 发布 Java-14 getter/setter 命名约定

Java 14 引入了记录功能。Record 创建与字段同名的 getter,因此可以编写print(person.name())例如。但是旧的 Java bean 约定规定应该将此方法命名为getName().

在同一个代码库中使用这两种样式看起来不太好。将所有内容迁移到记录是不可能的,因为它们太有限而无法替换所有用例。

是否有任何官方或半官方指南如何在新代码中在 Java 14 之后命名 getter 和 setter?

0 投票
1 回答
1309 浏览

java - 没有找到带有 Java 记录和 BeanPropertyRowMapper 的默认构造函数

我正在使用新的 Java 14 和 Spring Boot。我使用了新的很酷的记录,而不是用于数据持有者的常规 Java 类。

稍后在我的服务类中,我使用 SpringBeanPropertyRowMapper来获取数据。

我最终得到以下错误:

如何为记录添加默认构造函数,或者有没有其他方法可以解决这个问题?

0 投票
1 回答
131 浏览

java - 此代码段是否正在编译?我不这么认为 Java 14 记录

周末我在阅读一些关于 Java 14 预览特性的记录。我不想问这个问题,因为它似乎是 Brian Goetz 的代码,我们都知道这个人是谁,代表 Java 生态系统,但这一直在我的脑海里,我知道它会学习为了我。

链接在这里。https://www.infoq.com/articles/java-14-feature-spotlight/?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=Java

是这样的。

我假设这条线返回一个分数参考。

也许在我理解它试图做什么之前你已经看到了它,但有些东西我不明白。也许我错了。

这条线

的APIcomparingInt是这样的。

但只要我理解方法参考

从 Records 元组返回 Score 引用对吗?不是整数或导致整数

或者这会使代码编译我认为可能是一个打字错误。

正如我之前所说,根据我的理解,这段代码不会编译;也许我错了。

0 投票
1 回答
1156 浏览

java - Java 记录和 Lombok 注释 - IntelliJ

只是尝试动手操作java.lang.Record。我已经阅读了文档和JEP-359以获得一些理解。因此,在阅读了构造函数的隐式声明后,我想到了将它与现有的代码生成库 - Lombok 混合起来!

现在我最终创建的一个最小的可重现示例就是这条记录

当使用 IntelliJ 编译成功生成类文件时,它看起来像

请注意,.class文件的构造函数也正是我在这两个世界中独立所期望的。但是,在 IntelliJ 编译期间进一步尝试创建此记录的实例失败:

我将创建一个更简单的示例来javac使用工具执行编译和执行java。如果这是由于我可能忽略的某些事情而可能发生的预期行为,我仍在寻找答案?

这就是它在 IntelliJ 中反映的两种情况 - 有和没有@AllArgsConstructor.

截屏

0 投票
1 回答
368 浏览

java - 将类转换为记录时的兼容性问题

我一直在使用以下名为City

并试图将其转换为被record称为CityRecord

但是转向这样的表示,我们的一个单元测试开始失败。测试在内部处理从 JSON 文件读取的城市列表,并映射到进一步计算城市的对象,同时将它们分组到Map. 简化为:

上面的代码断言 true 包含 4 个键,每个键占其出现的 1 个。使用记录表示,结果中的键不超过 3 个Map。是什么导致了这种情况,应该采取什么方法来解决这个问题?

0 投票
0 回答
9082 浏览

java - 令牌“记录”上的 Java 14 语法错误,需要记录

我正在使用 Java 14 构建一些东西。

我写了一个名为 PersonInJava14 的类,如下所示。

但是,它会引发这样的错误。

该项目基于 Java 14,可以进行必要的设置以在 Java 14 中运行它。

这是我的设置部分。

在此处输入图像描述

我该如何解决?

0 投票
1 回答
1154 浏览

java - 将 Java 14 记录用于只有最终字段的通用(非数据)类

给定一个带有 final 字段的简单类,例如 a String(参见下面的示例)或 Spring 依赖项,使用 Java 14 记录使其更简洁并可能删除 Lombok 等注释处理器是一个好主意吗?

根据JEP对记录的描述,“记录在语义上声称是其数据的简单、透明的持有者”。

显然,只有最终字段的泛型类并不完全是其数据的透明持有者,并且在使用记录时,它的final变量会暴露出来,这可能是不可取的。然而,在许多情况下,这可能不是一个大问题。

因此,这是否“足以”将其视为对该语言功能的“滥用”?或者还有其他不那么明显的缺点吗?

0 投票
4 回答
4161 浏览

java - 使用新的 Record 类时无法反序列化

我正在尝试查看是否可以用 Java 14 中的新 Record 类替换现有的 Pojos。但无法这样做。收到以下错误:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造实例com.a.a.Post(没有创建者,如默认构造,存在):无法从对象值反序列化(没有基于委托或属性的创建者)

我知道错误是说记录没有构造函数,但是从我看到的记录类在后台处理它并且相关的吸气剂也在后台设置(不完全是吸气剂,而是 id() title() 等等在没有 get 前缀的情况下)。是因为 Spring 还没有采用最新的 Java 14 记录吗?请指教。谢谢。

我在 Spring Boot 版本 2.2.6 中执行此操作并使用 Java 14。

以下工作使用通常的 POJO。

邮政类

调用休息服务的方法现在可以使用,因为我正在使用上面的 POJO。

但是,如果我切换到使用记录的位置,则会收到上述错误。

新的记录类。

更改方法以使用记录而不是失败。

编辑:

尝试将如下构造函数添加到记录 Post 和相同的错误:

或者

0 投票
2 回答
13125 浏览

java - 为记录定义默认构造函数

我有一条记录,想为其添加默认构造函数。

但它使用int参数创建了构造函数。

我们如何向记录添加默认构造函数?

0 投票
4 回答
1299 浏览

java - Java Records 是否真的比类似的类声明节省了内存,或者它们更像是语法糖?

我希望 Java 14 记录实际上比类似的数据类使用更少的内存。

他们还是使用相同的内存?