java List 输入传入泛型 clazz

编写一个方法,方法签名如下

public <T> T getBean(String key, Class<T> clazz) throws JsonParseException, JsonMappingException, IOException {

在外部调用这个方法,传参如下

list=xxx.getBean(key, List.class);

但是代码出现下面的警告

Type safety: The expression of type List needs unchecked conversion to conform to List<DataMap>

出去使用添加注解@SuppressWarnings("unchecked")还有其他的解决办法吗?

阅读 8.2k
2 个回答

不知道你用的是哪个json库,但是机制都类似(名字也类似)
比如jackson有一个TypeReference<T>用来处理这种问题,写起来是这样:

TypeReference<List<String>> typeRef = new TypeReference<List<String>>(){};
List<String> data = mapper.readValue(json, typeRef);

如果你只是为了希望有一个返回List<DataMap>的话,你可以再包一个关于List的方法吧,也比较简单粗暴

public <T> List<T> getList(String key) throws IOException {
     List<T> bean = this.getBean(key, List.class);
     return bean;   
}

外面你想用什么类型接就可以用什么类型接,前提你明确你这个key里对应的数据类型

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题