public static <T extends Collection<? extends Object>,E extends Collection<? super Number>> void parseCollection(T src, E dest, Class<?> clazz){
for (Object obj : src) {
if(clazz.equals(Long.class)){
dest.add(Long.valueOf(obj.toString()));
}else if(clazz.equals(Integer.class)){
dest.add(Integer.valueOf(obj.toString()));
}
}
}
当我用 Set<String>
调用这个函数时作为 src 和 List<Long>
作为目的地
它显示编译时异常:“绑定(bind)不匹配:GenericMethods 类型的泛型方法 parseCollection(T, E, Class) 不适用于参数(Set、List、Class)。推断类型 List不是有界参数的有效替代>”
函数被这样调用:
Set<String> src = new HashSet<String>();
src.add("1");
src.add("2");
src.add("3");
src.add("4");
List<Long> dest = new ArrayList<Long>();
parseCollection(src, dest, Long.class);// exception
System.out.println(dest);
最佳答案
尝试重写您的转换方法,如下所示:
public static <E extends Number> void parseCollection(Collection<?> src, Collection<E> dest, Class<E> clazz){
for (Object obj : src) {
if(clazz.equals(Long.class)){
dest.add((E) Long.valueOf(obj.toString()));
}else if(clazz.equals(Integer.class)){
dest.add((E) Integer.valueOf(obj.toString()));
}
}
}
关于java - 我需要解析java中不同数据类型的其他集合中的集合内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28739959/