что правильный путь состоит в том, чтобы сделать полиморфизм с буферами протокола?

Я пробую к долгосрочному, сериализируют набор объектов, связанных сильной иерархией классов в Java, и я хотел бы использовать буферы протокола, чтобы сделать это из-за их простоты, производительности и простоты обновления. Однако они не оказывают много поддержки для полиморфизма. Прямо сейчас способ, которым я обрабатываю его, при наличии "одного сообщения для управления их всех" решение, которое имеет необходимое строковое поле uri, которое позволяет мне инстанцировать корректного типа через отражение, затем набор дополнительных полей для всех других возможных классов, которые я мог сериализировать, только один из которых будет использоваться (на основе значения поля uri). Существует ли лучший способ обработать полиморфизм, или действительно ли это столь хорошо, как я собираюсь добраться?

51
задан user364003 10 June 2010 в 10:38
поделиться

2 ответа

Рассматривали ли вы использование расширений ? Вы можете указать в поле uri, какой тип использовать, а затем просто загрузить соответствующие расширения. Если вы знаете, что ваши поля являются взаимоисключающими, вы можете повторно использовать идентификатор поля между отдельными расширениями.

Вы должны справиться со всем этим самостоятельно, потому что буферы протокола не предназначены для самоописания, кроме простого списка значений. Это затронуто на странице методов Google.

0
ответ дан 7 November 2019 в 10:16
поделиться

Ознакомьтесь с Расширениями и вложенными расширениями , чтобы получить более чистый способ сделать это.

2
ответ дан 7 November 2019 в 10:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: