gpt4 book ai didi

java - 为什么 JAX-RS 忽略 transient 关键字

转载 作者:行者123 更新时间:2023-12-01 17:50:48 26 4
gpt4 key购买 nike

在以下对象中:

class Foo implements Serializable {
transient String bar;
String baz;
}

JAX-RS 将忽略 transient 关键字,并仍然序列化响应中的 bar。在这种情况下,要阻止它被序列化,您需要使用注释(即 @XmlTransient)。这一要求背后的理由是什么?从表面上看。看来只要关键字就足够了。

在哪些用例中关键字可能不充分/不正确并且需要注释?

最佳答案

注释很棒,因为它们是命名空间的,允许多个 API 注释相同的字段,而不会互相干扰:

  • @XmlTransient 使其 transient 到 JAX-RS。
  • @JsonIgnore 使其暂时转移到 Jackson。
  • @Expose 使其在 GSON 中保持非 transient 。
  • 您可以不使用、任何或全部。

不幸的是,注释在 2004 年的 Java 1.5 中首次支持,而序列化则是在 1997 年的 Java 1.1 中添加的。

由于他们没有用户可声明的注释,因此他们添加了 transient 关键字。如果它今天发布,毫无疑问它会使用自己的 Serialization API 特定注释。

JAX-RS 选择将transient 视为只是另一个特定于 API 的注释。这是一个很好的调用,因为添加另一个 API 的注释很容易,但如果多个 API 尝试解释彼此的注释,它可能会变得复杂且容易出错。

关于java - 为什么 JAX-RS 忽略 transient 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50379980/

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