gpt4 book ai didi

java - jackson 如何在没有二传手的情况下设置私有(private)属性(property)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:22:05 26 4
gpt4 key购买 nike

我很好奇 Jackson 如何在没有 setter 的情况下创建对象,包括它的私有(private)属性/字段,并且只使用对象的空构造函数。

我问的原因是,当我反序列化某些属性时,我想根据这些值自动设置其他属性。例如,我不想序列化图像,而只是序列化它的路径。一旦路径被反序列化,@JsonIgnore 字段 Image 就可以加载实际图像。在构造反序列化对象之后,尚未分配字段。 setter/getter 在逻辑上不会被调用。那么是什么巫毒魔法在触摸我的物体私处?

public class ItemTemplate {

private String imagePath;

public ItemTemplate() {
System.out.println(imagePath); //Still null
}

public String getImagePath() {
System.out.println(imagePath); //Not being called when deserializing.
return imagePath;
}
}

但是当 Jackson 完成反序列化这个对象时,它已经设置了 imagePath

最佳答案

第一条评论回答了标题中的问题。 jackson 使用 reflection to access private and protected properties .这不知何故让我尝试了 imagePath 字段的私有(private) setter 。这个二传手确实被 jackson 使用,而不是直接访问该领域。在这个 setter 中,我可以使用路径字符串设置实际图像并仍然保持私有(private)。

关于java - jackson 如何在没有二传手的情况下设置私有(private)属性(property)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43821319/

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