gpt4 book ai didi

java - 如何区分 java 中未设置的属性和显式设置为 null 的属性?

转载 作者:行者123 更新时间:2023-11-30 05:31:54 27 4
gpt4 key购买 nike

我知道这可以通过 setter 来实现,但在现有代码中,所有模型都有公共(public)字段,我不希望进行重大更改。我希望显式设置为 null 的字段出现在序列化 json 中,但未设置的属性不应出现。

Javascript 区分未定义和 null。 Java中有类似的规定吗?

我使用 gson 进行序列化/反序列化。

最佳答案

无需额外的代码,这在 Java 中是不可能的。

关于该要求,您可以采用 @khelwood 提到的方法,但在这种情况下,您必须调整调用者代码(这可能会或可能不会很棘手)。

我会考虑使用aspectj 。这样就不必更改任何代码并创建一个切入点来保护模型类的所有 setter 。 apsect 本身可以跟踪在哪个对象上调用了哪些方法。但必须小心编写代码,因为线程可能是一个问题。

这种方法要复杂得多,但根据您的情况,可能值得付出努力。

另一个想法

您可能只是使用您认为“未定义”的常量初始化每个字段。您只需确保这些值不能由“真实”应用程序设置。

关于java - 如何区分 java 中未设置的属性和显式设置为 null 的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57354105/

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