我在使用fastjson过程中,发现一个使用起来不是很方便的地方,请各位看官闲于时间帮忙看一下
使用场景:
从 redis 中通过 hgetAll 取出一个用户对象,返回一个Map<String,String> userMap;
然后我想通过 User user = JSONObject.toJavaObject(new JSONObject(userMap),User.class); 的方式将map转换成一个user对象,但是这段代码是报错的。原因是JSONObject的这个构造方法只支持Map<String,Object>,我从redis中获取到的是Map<String,String>.
于是我想通过重写JSONObject的方式,将这里的构造方法参数改为Map<String,? extend Object>,用来满足我的要求。
提问:
1、java中的类默认继承Object , 那Map<String,Object>是否也包含Map<String,String>,这里是否可以体现出多态呢?
2、泛型 ,Map<String,? extends Object> 这里是所有继承于Object的类包括Object,那这里使用Map<String,Object> = Map<String,? extends Object>为什么还报错了,原因是否和上面1提出的问题接近呢?(然后这里对java的泛型擦除概念又有点迷糊了,能否一起解答下)
3、@温少 ,如我上面的功能,需要将任意的Map<String,? extends Object> 通过fastjson序列化为一个对象,需要怎么处理呢?现在我只能先将map toJsonString后,在通过parse(String,Class)的方式转为对象
小弟知识不扎实,还请大神路过时,指点一二,拜谢
www.cockfly.com
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。