Java 记录数据类型不适用于网络通信

vic*_*vic -5 java java-14 java-record

我认为 Java 14 中新的 Java Record 数据类型应该适用于跨网络的数据,因为数据不应该在过程中发生变化,这是记录数据类型的主要特征 - 不可变。

我使用 RSocket 中的数据类型。在发送方,编码器出现错误。我还没有找到编码器是关于什么的。在接收器端,出现解串器错误。据我所知,记录不能实现诸如 Serializable 之类的接口。

所以,记录数据类型不适用于网络编程,对吗?

更新:

我将 Serializable 接口添加到发送方和接收方的记录定义中。发出请求后,TCP发送端没问题,但接收端报错

No encoder for com.....data.Notification, current value type is class com.....data.Notification
Run Code Online (Sandbox Code Playgroud)

那些标记这个问题的人有不同的经历吗?

Dor*_*ray 5

据我所知,记录不能实现诸如 Serializable 之类的接口。

它可以。只需添加implements Serializable到其声明中即可。它不能扩展任何其他类,因为它已经扩展了Record,如果这就是您的意思的话。

JEP-359

除了上述限制之外,记录的行为就像普通类:它们可以被声明为顶级或嵌套的,它们可以是通用的,它们可以实现接口,并且它们通过 new 关键字实例化。