全国服务热线:400-035-8011

位置:沈阳兄弟连IT培训学校 > 学校动态 > java小知识 大智慧

java小知识 大智慧

来源:沈阳兄弟连IT培训学校时间:2019/11/25 10:30:26

java知识面很多,如果想系统的学习java知识,好是看完一本相关书籍,其实这本书籍不用是什么名人写的,只要他有几年的开发经验基本上可以写出一个入门级的java图书。所以我在这就不去讲一些整体框架的东西了,就说一下平常遇到的小问题吧。

小问题,大智慧哦。且看:

如果我按照一般情况下使用jackson对字符型数据反序列化的话会不会有问题,建议大家思考2分钟,好好看看代码哦

java小知识 大智慧

运行之后发现会报:

no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)

从字面意义上大家可以看出来,是告诉我们缺少构造函数导致的,但是我明确的在内部类中把默认的构造函数从新写了一遍,但是还出现这个问题

其实这个是一个老生常谈的问题了,表面看起来是关乎java的序列化和反序列化,首先对序列化和反序列化的解释为:

序列化:把对象转换为字节序列的过程称为对象的序列化。

反序列化:把字节序列恢复为对象的过程称为对象的反序列化。

但是答案为:把普通内部类配置为静态内部类,加static就可以正常运行了,由答案反推基本上可以确定跟序列化和反序列化的原理没有关系了

那问题基本上就要围绕java的静态内部类来深究了:

我查了网上的资料有一位同学的讲解很到位:非静态内部类(包括匿名内部类)被编译器通过隐藏的构造器传递了一组隐藏变量.直接结果就是, 无默认构造函数 -- 即使代码里面确实有一个无参的构造函数可以使用。

以上是编译后的内容,大家可以发现并没有零参数构造函数。这个就不能赖jackson返回缺少默认的构造函数了

不知道大家之前有没有遇到过这个问题,反正就当玩了,大家可以慢慢来,以后我每天发一下自己平常工作中遇到的小问题,一起学习

领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/1791/news/110763/违者必究! 以上就是沈阳兄弟连IT培训学校 小编为您整理 java小知识 大智慧的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-035-8011