问题标签 [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 投票
1 回答
436 浏览

java - Java 15 - getter 具有不同返回类型的记录

是否可以在 java 15 中实现类似的东西?

在这里我得到了例外

(return type of accessor method maybeProp() must match the type of record component maybeProp)

所以 - 我明白问题是什么;但是还有其他解决方案吗?如何在记录中有可选成员,我不需要使用初始化Optional.of()

0 投票
2 回答
812 浏览

jsf - 用作 JSF 值的 Java 记录

我正在使用 Java 15 和 JSF 2.3 以及 PrimeFaces 8 开发一个简单的 JSF Web 应用程序(主要用于学习),并且我正在使用一个简单的 Java 记录来对实体进行建模。该应用程序不使用任何数据库。

我的问题是是否可以像这样在 xhtml 页面中使用 java 记录作为值

因为我收到以下错误 javax.el.PropertyNotFoundException: The class 'com.company.Car' does not have the property 'id'.。我试过把car.year(),但它没有用。记录的定义是这样的

在 pom.xml 中,我使用的是以下 api

谢谢您的帮助!

0 投票
2 回答
461 浏览

java - java记录是否类似于c#结构?我的意思是,如果它们是堆栈分配的

java记录是否类似于c#结构?我的意思是,如果它们是堆栈分配的,而不是使用类之类的引用,那么它们是在堆上分配的。

0 投票
0 回答
66 浏览

java - 在 Eclipse 中使用本地记录的规范构造函数(预览功能)导致验证错误

我正在尝试在 Eclipse 中使用带有规范构造函数的记录预览功能。

但是,在运行时会导致验证错误。

线程“main”java.lang.VerifyError 中的异常:构造函数必须在返回之前调用 super() 或 this() 异常详细信息:位置:Example$1Range.(II)V @36:返回原因:字节码中存在错误字节码: 0000000:1b1c a400 22bb 000b 5912 0d05 bd00 0f59 0000010:031b b800 1153 5904 1cb8 0011 53b8 0017 0000020:b700 1dbf b1 堆栈图表:same_frame(@36)

在 Example.main(Example.java:10)

这发生在带有 JDK 14 的 eclipse 2020-06 和带有 JDK 15.0.1 和 eclipse 15 支持的 eclipse 2020-19 中。

使用 bin\java 从命令行运行它没有问题,然后不会引发错误。

这对他们日食的其他人有用吗?有什么解决方法吗?

0 投票
2 回答
1725 浏览

java - 为什么 Java 记录的规范构造函数没有比记录级别更严格的访问权限?

我有一种情况,我希望特定类型的记录实例只能使用同一包内的单独类中的工厂方法创建。这样做的原因是因为在创建记录之前我需要执行大量的验证。

记录旨在成为其验证字段的哑数据载体,但验证不能在记录的构造函数中进行,因为我们需要访问一些复杂的验证器对象才能实际执行验证。

由于将验证器对象传递给记录构造函数意味着它们将构成记录状态的一部分,这意味着我们不能使用记录构造函数来执行记录的验证。

因此,我将验证提取到它自己的工厂中并编写了类似这样的代码(工厂类和同一包中的记录):

无论出于何种原因,上述内容不适用于 IntelliJ 抱怨:

我可以通过使用普通类(它允许单个包私有构造函数)来避免这个问题,但希望更准确地将数据建模为记录。

为什么对记录存在此限制?未来是否有计划取消此限制?

0 投票
2 回答
274 浏览

java - Java 记录和每个文件的单个类限制

我正在尝试使用 java 14 的新记录功能,目前处于预览状态。
我知道在 Java 中,每个文件必须有一个公共类,但是新的记录语法非常好而且很短,让一堆文件中的每个文件都有一行代码似乎很浪费。

特别是我想尝试像这样对简单的 AST 进行建模,我认为将所有内容放在一个文件中确实可以提高可读性和理解力。

但不幸的是,这不会编译。
所以我的问题是:

有什么方法可以绕过这个限制,或者有什么方法可以将这样的代码全部保存在一个地方?

0 投票
3 回答
1903 浏览

java - 将值设置为 Java 15 记录中的属性之一

我在我的代码中使用 Java 15 预览功能记录,并将记录定义如下

在控制器级别,我有以下代码

在模型中的 UI 中,没有传递id的值,但是,它作为路由参数传递。现在我想在控制器级别设置值,例如

如何将值设置为记录特定属性

0 投票
1 回答
1150 浏览

micronaut - 使用 Micronaut 验证 POJO 记录不起作用

对记录类使用 Micronaut bean 验证不起作用

记录类

卷曲

控制器方法

错误为

注释过程已启用。

构建.Gradle

0 投票
1 回答
1007 浏览

java - 为什么不能将枚举和记录结合起来?

最近我只是在创建另一种枚举类型。我利用了这样一个事实,即在 Java 中,枚举是一种特殊类型的类(而不是像在 C# 中那样命名的整数常量)。我用两个字段制作了它,一个全参数构造函数和两个字段的 getter。

这是一个例子:

然后我认为 Java 14 的record关键字会为我保存该功能试图拯救我的样板代码。据我所知,这不与enums 结合。如果存在枚举记录,则上述代码将如下所示:

我的问题是:枚举记录不存在是否有原因?我可以想象几个原因,包括但不限于:

  • 此功能的用例数量太少,如果我们作为 Java 语言设计者设计和实现其他功能,Java 语言将受益更多。
  • 由于枚举类型的内部实现,这很难实现。
  • 我们作为 Java 语言的设计者,根本没有考虑到这一点,或者我们还没有收到社区这样的要求,所以我们没有优先考虑它。
  • 此功能会存在语义问题,或者此功能的实现可能会导致语义模糊或其他混乱。
0 投票
1 回答
184 浏览

java - Java 记录是否支持“with”语法?

Java 14 带来了记录,这是在许多函数式语言中看到的一个很好的补充:

爪哇:

毫升:

在 ML 语言中,可以通过创建一个更改了一些值的副本来“更新”记录:

这在 Java 14 中可能吗?