fastjson的JsonObject 初始化方法参数的问题,能否使用泛型

蓬莱渡劫 发布于 2015/10/23 20:33
阅读 2K+
收藏 0

我在使用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)的方式转为对象

小弟知识不扎实,还请大神路过时,指点一二,拜谢



加载中
返回顶部
顶部