gpt4 book ai didi

java - 覆盖 Protocol Buffer 在将字段设置为 null 时抛出 NPE 的默认行为

转载 作者:行者123 更新时间:2023-12-01 19:50:24 29 4
gpt4 key购买 nike

我使用protocol buffers maven插件来编译.proto文件。我真的很喜欢 Protocol Buffer ,除了它不接受空值作为默认值或无值的一件事。相反,每当传递 null 时,它都会抛出 NPE。防止这种 NPE 不必要地使代码变得臃肿,太多了,无论如何我都想避免这种情况!

我看到社区强烈提出此请求/问题,但 PB 团队拒绝了。现在,我正在寻找任何可以通过自己修改/实现任何类来覆盖此行为的方法,以便编译我的原始文件以生成不会在空值上引发 NPE 的代码。谁能建议如何做?或者有没有更简单的方法?

最佳答案

Now I'm looking for any ways I could override this behavior by modifying/ implementing any of the classes myself so that my proto files are compiled to produce code which doesn;t throw NPE on nulls.

简单地说,您想要更改消息生成器代码。这很复杂,但也没那么复杂。缺点是它是用 C++ 编写的……当然,您将来需要维护您的 fork,或者只能使用当前形式的 protobuf。

您可能想从查看 java_string_field.cc 开始和 java_message_field.cc .

我估计这只是几天的工作,如果那样的话 - 但你将永远承担一个虽小但存在的维护负担。

当然,另一种选择是完全从头开始自己重写消息生成 - 这显然是一项更大的任务,但我最终为我的 protobuf-csharp-port 做了这个任务。项目...在 C++ 版本工作后。 (不过,我的端口遵循相同的非无效方法。)

关于java - 覆盖 Protocol Buffer 在将字段设置为 null 时抛出 NPE 的默认行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15870783/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com