Object转换List<Map<String,Object>>

1 使用场景

使用的时候IDEA会提示警告 说未检查类型.

List<Map<String,Object>> users = (List<Map<String,Object>>) Obj;

2 解决办法

  1. 使用@SuperWarning({“unchecked”})进行压制
  2. 写个工具类进行转换

2.1 方法1,压制警告

@SuperWarning({"unchecked"})
List<User> users = (List<User>) Obj;

2.2 方法2,手动转换

public static <K, V> List<Map<K, V>> castListMap(Object obj, Class<K> kCalzz, Class<V> vCalzz) {
	List<Map<K, V>> result = new ArrayList<>();
	if (obj instanceof List<?>) {
		for (Object mapObj : (List<?>) obj) {
			if (mapObj instanceof Map<?, ?>) {
				Map<K, V> map = new HashMap<>(16);
				for (Map.Entry<?, ?> entry : ((Map<?, ?>) mapObj).entrySet()) {
					map.put(kCalzz.cast(entry.getKey()), vCalzz.cast(entry.getValue()));
				}
				result.add(map);
			}
		}
		return result;
	}
	return null;
}

个人不喜欢使用注解消除警告,因为觉得这个消除了,但是仍然存在隐患. 所以选择使用静态方法进行转换. 结果可控.


Object转换List<Map<String,Object>>
https://yangxj96.github.io/2022/12/java/b001/
作者
yangxj96
发布于
2022年12月22日
许可协议