请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

复杂对象反序列化时的泛型问题

https://img1.sycdn.imooc.com//szimg/5a29eb8b0001dcf613650546.jpg

老师,视频中是对整体进行泛型类型的转换。我想单独对三目运算符的表达式3进行泛型转换,然后出现类型错误。第一次改进是在三目运算符的表达式3中加入泛型转换,是可以的。然后第二次改进,直接返回三目运算符的表达式3,也是可以的。ObjectMapper中的readValue方法的返回值已经是泛型的。https://img1.sycdn.imooc.com//szimg/5a29ee410001e20f11950208.jpg

现在疑惑是,为什么第一次改进要进行泛型转化,而第二次改进又不需要?

正在回答

1回答

Geely 2017-12-08 15:09:33

你好,同学,这个是代码健壮性一个因素,还有 复杂泛型和单独泛型是两回事。例如之前只有Class就可以。但是后续要考虑泛型包装的问题。第二次改进应该是说用可变长参数那个函数吧?还有你说的第一次改进和第二次改进咱们不是在一个函数里的呀。。



0 回复 有任何疑惑可以回复我~
  • 提问者 量能授官 #1
    老师,我解决了。jdk版本问题,我从1.7换成1.8后
    return  typeReference.getType().equals(String.class) ? (T)str : objectMapper.readValue(str,typeReference);
    不会报错。度娘后发现 是Java 8的新特性:泛型目标类型推断。
    回复 有任何疑惑可以回复我~ 2017-12-08 17:33:25
  • 提问者 量能授官 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-12-08 18:51:57
  • Geely 回复 提问者 量能授官 #3
    嗯嗯是的~~不用客气,很赞同学,和细心。挺好滴~~
    回复 有任何疑惑可以回复我~ 2017-12-09 14:28:48

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信