当我在IntelliJ中编写这段代码时,它给出了这个错误:
通配符只能用作引用形参。
我的代码
static <T extends Iterable<?>> void print(T collection) {
for (var item : collection) {
System.out.println(item + " ");
}
System.out.println();
}
我从您的代码中获得IntelliJ中的相同消息。但是,代码仍然可以编译和运行,并且工作良好,所以它似乎是IntelliJ中的一个错误。
对于您的具体情况,您的代码可以简化为这样一种方式,以避免想象的问题:
static void print(Iterable<?> collection) {
for (var item : collection) {
System.out.println(item + " ");
}
System.out.println();
}
这提供了相同的功能,但是在这里使用var
没有被检测为问题。