Java泛型通配符查询



我有2个与Java泛型相关的查询

1)我是java泛型的新手。我正在尝试转换通配符,如下所示:

void meth(List<?> list) {
List<Integer> integers = (List<Integer>)list; //how to find the type of object from wildcard?
}

我想从列表中找出对象的类型

2)我有一个方法如下:

public static <T extends Number> void copy(List<T> dest, List<T> src) {
}

那么为什么我得到编译错误,而试图调用copy(整数,浮点数);怎么了?

对于#1,我看到了一些设计问题但如果你想知道类,我认为你可以使用像这样的

if(list.get(0) instanceof Integer) {
System.out.println("This is an integer");
}

对于#2,dest和src都有相同的泛型类T,如果你想让它们不同,你必须引入一个新的泛型。请试试这个

public static <T extends Number, R extends Number> void copy(List<T> dest, List<R> src) { 
// your code
}

最新更新