【问题标题】:Java Record Data Type Doesn't Work For Network CommunicationJava 记录数据类型不适用于网络通信
【发布时间】:2020-06-14 16:46:11
【问题描述】:

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

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

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

更新:

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

No encoder for com.....data.Notification, current value type is class com.....data.Notification

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

【问题讨论】:

  • 您可能想阅读this
  • 如果有兴趣解决,当您说我收到反序列化程序错误时会出现什么错误?
  • @Naman 在收到反序列化错误后,我将代码改回了类类型。我的电脑后来崩溃了。一旦我可以重现错误,我将在此处发布错误消息。

标签: java java-14 java-record


【解决方案1】:

据我所知,记录无法实现诸如 可序列化。

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

JEP-359

除了上述限制之外,记录的行为类似于普通类: 它们可以声明为顶层或嵌套,它们可以是通用的,它们 可以实现接口,它们通过新的实例化 关键字。

【讨论】:

  • 在我的测试中,单独实现 Serializable 并不能为跨网络的数据创造记录。
  • 我对RSocket一无所知,老实说,我只是纠正了你关于记录的观点。您可以尝试不使用记录。记录不应该在生产中使用,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多