当前位置: 首页 > 面试题库 >

为什么在使用@JsonCreator注释构造函数时,必须使用@JsonProperty注释其构造函数?

章锦
2023-03-14
问题内容

在Jackson中,当您使用注释构造函数时@JsonCreator,必须使用注释其参数@JsonProperty。所以这个构造函数

public Point(double x, double y) {
    this.x = x;
    this.y = y;
}

变成这个:

@JsonCreator
public Point(@JsonProperty("x") double x, @JsonProperty("y") double y) {
    this.x = x;
    this.y = y;
}

我不明白为什么有必要。你能解释一下吗?


问题答案:

Jackson必须知道以什么顺序将字段从JSON对象传递给构造函数。使用反射无法在Java中访问参数名称-这就是为什么您必须在注释中重复此信息的原因。



 类似资料:
  • 问题内容: 在Jackson中,当用注释构造函数时,必须用注释其参数。所以这个构造函数 变成这个: 我不明白为什么有必要。你能解释一下吗? 问题答案: Jackson必须知道以什么顺序将字段从JSON对象传递给构造函数。使用反射无法在Java中访问参数名称-这就是为什么您必须在注释中重复此信息的原因。

  • 我正在开发一个Spring Boot应用程序(v2.1.5版本),其中h2是内存数据库。我创建了一个简单的项目,主要和只有一个模型人。java只有3个私有字段。我根本没有构造函数,但当我启动应用程序并打开h2控制台时,我仍然能够看到从实体Person创建的表。我从一个SO问题中读到,当我们使用@entity注释时,需要一个无参数构造函数。它是强制性的吗? 人Java语言 主要类别

  • 问题内容: 我的spring bean具有一个带有唯一强制性参数的构造函数,我设法用xml配置对其进行了初始化: 然后,我像这样使用此bean,并且效果很好。 但是我想用注释指定contructor arg值,例如 这可能吗 ? 提前致谢 问题答案: 首先,必须在bean定义中而不是在注入点中指定构造函数arg。然后,你可以利用spring的注释(spring 3.0) 就我所看到的问题而言,这可

  • 有人能帮助实现没有注释的Guice吗? pom。xml 我所尝试的: 我得到的错误是: 我理解这个错误。 但是我希望我可以“指向”Guice到正确的构造函数......而不是使用注释。 如您所见,使用默认/空构造函数不是一个好选择,因为这个示例很简单,但我想坚持使用基于构造函数的注入。 附加: 根据我在评论中从赫曼特·辛格那里得到的“暗示”,我想我离得更近了。 我创建了一个ProductionIn

  • 问题内容: 在Java的构造函数中,如果要调用另一个构造函数(或超级构造函数),则它必须是该构造函数的第一行。我认为这是因为不允许您在其他构造函数运行之前修改任何实例变量。但是,为什么不能在构造函数委派之前使用语句,以便计算另一个函数的复杂值?我想不出任何正当的理由,在一些实际案例中,我编写了一些丑陋的代码来解决此限制。 所以我只是想知道: 有此限制的充分理由吗? 有没有计划在将来的Java版本中

  • 在一本支持Spring3的书中,第4章——Spring中的IOC和DI简介——第59页,在“Setter注入与构造函数注入”一节中,有一段说 包括Spring,提供了一种机制,用于确保在使用Setter注入时定义所有依赖项,但通过使用构造函数注入,您可以以与容器无关的方式断言对依赖项的需求。” 你能举例解释一下吗