簡體   English   中英

覆蓋協議緩沖區在將null設置為字段時拋出NPE的默認行為

[英]Override protocol buffers default behavior of throwing NPE when setting null to fields

我使用協議緩沖區maven插件來編譯.proto文件。 我真的很喜歡協議緩沖區,除了一件事它不接受nulls作為默認值或沒有值。 相反,只要傳遞null它就會拋出NPE。 防止這個NPE不必要地膨脹代碼,太多了,我真的想要無論如何都要避免這種情況!

我已經看到這個請求/問題被社區大力提出並被PB團隊拒絕。 現在我正在尋找任何可以通過自己修改/實現任何類來覆蓋此行為的方法,以便我的proto文件被編譯為生成不會在空值上拋出NPE的代碼。 任何人都可以建議如何? 或者有更簡單的方法嗎?

現在我正在尋找任何方法可以通過自己修改/實現任何類來覆蓋此行為,以便我的proto文件被編譯為生成代碼而不會在空值上拋出NPE。

簡而言之,您需要更改消息生成器代碼。 它的復雜,但它並沒有那么復雜。 缺點是它是在C ++中......當然,你需要在將來維護你的分支,或者以當前的形式堅持使用protobuf。

您可能希望從查看java_string_field.ccjava_message_field.cc

我估計這只是幾天的工作,如果那樣 - 但你將永遠承擔一個小但現在的維護負擔。

當然,另一種選擇是完全自己從頭開始重寫消息生成 - 這顯然是一項更大的任務,但我最終為我的protobuf-csharp-port項目做了一個......在獲得C ++版本工作之后。 (我的端口遵循相同的非nullity方法。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM