Тип данных записи Java не работает для сетевого взаимодействия
Я думал, что новый тип данных Java Record в Java 14 должен подходить для передачи данных по сети, потому что данные не должны изменяться в процессе, который является основной особенностью типа данных записи - неизменяемым.
Я использую тип данных в RSocket. На стороне отправителя я получаю сообщение об ошибке кодировщика. Я не нашел, что такое кодировщик. На стороне приемника я получаю ошибку десериализатора. Насколько мне известно, запись не может реализовать такой интерфейс, как Serializable.
Итак, тип данных записи не подходит для сетевого программирования, верно?
Обновить:
Я добавляю интерфейс Serializable к определению записи как на стороне отправителя, так и на стороне получателя. После отправки запроса это нормально на стороне отправителя TCP, но ошибка на стороне получателя
No encoder for com.....data.Notification, current value type is class com.....data.Notification
У тех, кто отметил этот вопрос, другой опыт?
1 ответ
Насколько мне известно, запись не может реализовать такой интерфейс, как Serializable.
Это может. Просто добавьimplements Serializable
к его декларации. Он не может расширять какой-либо другой класс, потому что он уже расширяетRecord
, если ты это имеешь в виду.
См. JEP-359.
Помимо вышеуказанных ограничений, записи ведут себя как обычные классы: они могут быть объявлены верхним уровнем или вложенными, они могут быть универсальными, они могут реализовывать интерфейсы и создаются с помощью ключевого слова new.