Java继承属性后内存,java - Jackson:继承和必需的属性 - 堆栈内存溢出
我目前正在尝试使用能够处理多态性的杰克逊(Jackson)实现反序列化器,也就是说,给定这两个类:
public abstract class Animal {
private String name;
private float weight;
@JsonCreator
protected Animal(@JsonProperty(value="name") String name, @JsonProperty(value="weight",required=true) int weight) {
this.name=name;
this.weight=weight;
}
}
public class Dog extends Animal {
private int barkVolume;
@JsonCreator
public Dog(String name,int weight, @JsonProperty(value="barkVolume",required=true) int barkVolume) {
super(name, weight);
this.barkVolume=barkVolume;
}
}
解串器应该能够从json字符串中推断并实例化适当的子类。
我使用了一个自定义的反序列化器模块,UniquePropertyPolymorphicDeserializer(来自https://gist.github.com/robinhowlett/ce45e575197060b8392d )。 该模块的配置如下:
UniquePropertyPolymorphicDeserializer deserializer =
new UniquePropertyPolymorphicDeserializer(Animal.class);
deserializer.register("barkVolume", Dog.class);
SimpleModule module = new SimpleModule("UniquePropertyPolymorphicDeserializer");
module.addDeserializer(Animal.class, deserializer);
mapper.registerModule(module);
该模块向用户询问Animal的每个子类的唯一属性。 因此,当解串器找到具有barkVolume属性的json字符串时,它知道应该实例化Dog。
但是,我对json属性的规范存在疑问,因为子类不能从父类中给定的属性继承。 在Dog类中,我必须再次指定“ name”和“ weight”是json属性,即使在Animal类中已经指定了这些属性:
public Dog(@JsonProperty(value="name") String name, @JsonProperty(value="weight",required=true) int weight, @JsonProperty(value="barkVolume",required=true) int barkVolume) {
super(name, weight);
this.barkVolume=barkVolume;
}
否则,解串器将产生错误:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Invalid type definition for type `Animals.Dog`: Argument #0 has no property name, is not Injectable: can not use as Creator [constructor for Animals.Dog, annotations: {interface com.fasterxml.jackson.annotation.JsonCreator=@com.fasterxml.jackson.annotation.JsonCreator(mode=DEFAULT)}]
at [Source: UNKNOWN; line: -1, column: -1]
这个解决方案对我来说并不令人满意:
每次我们要创建Animal的新子类时,都必须在此类中指定name和weight为json属性。
这很棘手,例如在Animal类中,weight属性被标记为必需,而在子类中,我们可以定义weight不是必需属性。
您是否知道一种从父类的属性“继承”的方法,以避免每次在子类中指定对应的json属性?
最好的祝福,
马蒂厄
Java继承属性后内存,java - Jackson:继承和必需的属性 - 堆栈内存溢出相关推荐
- java内存溢出让tomcat停止_java - 使用JVM Open J9一段时间后,应用程序(tomcat)停止响应 - 堆栈内存溢出...
我正在使用Open J9,一段时间后我的应用程序停止响应..在生产中发生了2个小时后,在本地设法使用JMeter进行模拟. 应用程序(tomcat)只是停止响应,我需要重新启动才能将其取回. 问题是日 ...
- java多属性的map_java - 具有多个参数的MapStruct QualifiedByName - 堆栈内存溢出
目前,MapStruct不支持具有多个源属性的映射方法. 但是,在您的情况下,您可以使用1.2.0中的@Context . 根据我的理解, projId和code就像映射的帮助器一样,它们不用于映射目 ...
- pdfbox java.lang.outofmemoryerror_java - PDFBox 2.0.1挂起渲染pdf页面 - 堆栈内存溢出
可以在Java 8 VM中重现该问题. 正如@Tilman在他的回答中已经提到的,这是Java 8使用与以前的Java版本不同的颜色管理系统引入的一个问题. 通过使用新的色彩管理系统分析VM行为,可以 ...
- flyingsaucer转换多个html,java - 使用FlyingSaucer将包含阿拉伯字符的HTML页面转换为PDF - 堆栈内存溢出...
我想使用FlyingSaucer将包含阿拉伯字符的HTML页面转换为PDF文件,但生成的PDF不包含组合字符并向后打印输出. HTML: جميع الحقوق Java摘录: String inpu ...
- java自带的unpack闪退,java - 使用requiresUnpack无法正常使用Maven构建的Spring Boot JAR - 堆栈内存溢出...
我的POM看起来像这样: xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ ...
- java 图片有损压缩_java - 用有损jpeg压缩多页tiff图像 - 堆栈内存溢出
将图像从16位减少到8位. 假设您有一个byte []变量plane16,在其中您有图像的所有像素. 注意 :我的byte [] plane16从16位图像获取数据,但是byte为8bit = 1by ...
- java算球体积的代码_java - 球体体积法不起作用 - 堆栈内存溢出
为了使球体体积法起作用,我尝试了许多不同的计算方法. 我的Sphere类是从Circle扩展的,以从圆中获取面积,并实现了Shape3D接口,该接口允许我使用体积方法. 但是,我已经为我的方法尝试了所 ...
- java pdf 用系统字体大小_java - Java PDFBox设置PDF表单中几个字段的自定义字体 - 堆栈内存溢出...
使用穷人的大胆 我如何大胆的领域? ......我需要设置哪些大胆的字段? 在PDF中,您通常使用带粗体字形的字体使文本变为粗体,另请参阅第二个问题. 如果你手上没有这么大胆的字体,你可能会使用一些穷 ...
- win7计算机属性后没反应,win7系统计算机右键查看属性时没有反应的应对方案
win7系统计算机右键查看属性时没有反应的应对方案 更新时间:2016-07-13 14:29:48 阅读:200 作者:win7旗舰版系统下载 当用户查看Win7系统属性时,直接右键"计算 ...
- PHP数组json占用内存,php - 从json“连接”多个数组 - 堆栈内存溢出
我想用json-array中的文本替换我从json-array接收的数据,将其写入表中(我使用datatables). 第一个数据集来自这里 ,第二个数据集来自这里 这是我到目前为止的源代码: $ch ...
最新文章
- oracle命令导入表
- nero 8.0刻录系统光盘
- 编写程序,输入某年某月,求该月有多少天
- python--lambda和def函数
- leetcode算法题--二叉搜索树的最近公共祖先
- 153. Find Minimum in Rotated Sorted Array
- 用固定收敛标准特征迭代次数法实现分类是不是一个巧合?
- 天翼云从业认证(1.1)服务器的分类、用途、特点、结构和组件
- [html] 编写一个布局,让文字环绕在图片的周围
- php遍历原理,PHP数组遍历与实现原理
- css中关于transform、transition、animate的区别
- 换工作,看机会的,戳进来!
- 海康威视摄像头使用:iVMS-4200 VS客户端
- Setup Factory安装及程序安装包制作教程
- 希尔密码(原理+代码)
- NoteExpress文献题录如何导出到excel
- 电话簿简单实现(JAVA,带图形界面文件读取)
- 2016款MACBOOK PRO触控条版 安装WIN10初体验 及 无奈退货记
- 【新知实验室】-多人视频会议体验
- js找出两个数组中的重复项
热门文章
- YHLMR009 交货单查询
- php 生成网页固定头,如何去除KingCMS PHP版头部自动生成的generator信息
- 加息减税后,定期存款何时转存划算
- 2016年上半年上午系统集成项目管理工程师考试试题
- 哈工大威海计算机科学与技术好不好,哈尔滨工业大学威海校区和西电比哪个计算机专业好...
- 基于STM32实现孤立词语音识别系统
- Windows Server 2022 Install Veeam Backup 12
- 如何使用Doctl,DigitalOcean官方命令行客户端
- Spring Security Oauth2 token 续期
- 十进制转BCD码的方法