cn.hutool.core.convert.CastUtil Maven / Gradle / Ivy
package cn.hutool.core.convert;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 转换工具类,提供集合、Map等向上向下转换工具
*
* @author looly
* @since 5.8.1
*/
public class CastUtil {
/**
* 泛型集合向上转型。例如将Collection<Integer>转换为Collection<Number>
*
* @param collection 集合
* @param 元素类型
* @return 转换后的集合
* @since 5.8.1
*/
@SuppressWarnings("unchecked")
public static Collection castUp(Collection extends T> collection) {
return (Collection) collection;
}
/**
* 泛型集合向下转型。例如将Collection<Number>转换为Collection<Integer>
*
* @param collection 集合
* @param 元素类型
* @return 转换后的集合
* @since 5.8.1
*/
@SuppressWarnings("unchecked")
public static Collection castDown(Collection super T> collection) {
return (Collection) collection;
}
/**
* 泛型集合向上转型。例如将Set<Integer>转换为Set<Number>
*
* @param set 集合
* @param 泛型
* @return 泛化集合
* @since 5.8.1
*/
@SuppressWarnings("unchecked")
public static Set castUp(Set extends T> set) {
return (Set) set;
}
/**
* 泛型集合向下转型。例如将Set<Number>转换为Set<Integer>
*
* @param set 集合
* @param 泛型子类
* @return 泛化集合
* @since 5.8.1
*/
@SuppressWarnings("unchecked")
public static Set castDown(Set super T> set) {
return (Set) set;
}
/**
* 泛型接口向上转型。例如将List<Integer>转换为List<Number>
*
* @param list 集合
* @param 泛型的父类
* @return 泛化集合
*/
@SuppressWarnings("unchecked")
public static List castUp(List extends T> list) {
return (List) list;
}
/**
* 泛型集合向下转型。例如将List<Number>转换为List<Integer>
*
* @param list 集合
* @param 泛型的子类
* @return 泛化集合
*/
@SuppressWarnings("unchecked")
public static List castDown(List super T> list) {
return (List) list;
}
/**
* 泛型集合向下转型。例如将Map<Integer, Integer>转换为Map<Number,Number>
*
* @param map 集合
* @param 泛型父类
* @param 泛型父类
* @return 泛化集合
* @since 5.8.1
*/
@SuppressWarnings("unchecked")
public static Map castUp(Map extends K, ? extends V> map) {
return (Map) map;
}
/**
* 泛型集合向下转型。例如将Map<Number,Number>转换为Map<Integer, Integer>
*
* @param map 集合
* @param 泛型子类
* @param 泛型子类
* @return 泛化集合
* @since 5.8.1
*/
@SuppressWarnings("unchecked")
public static Map castDown(Map super K, ? super V> map) {
return (Map) map;
}
}