赋值:编写一个通用静态方法print()
,该方法将打印实现Iterable<E>
接口的任何对象的元素。
public class ThisUtil
{
public static <T extends Iterable<T>> void print(T[] anArray) {
ArrayList<String> stringList = new ArrayList<>();
for(T element: anArray)
{
stringList.add(element.toString());
}
String result = String.join(",", stringList);
System.out.println(result);
}
public static void main(String[] args) {
Integer[] list = {1, 2, 5, 9, 3, 7};
ThisUtil.print(list);
}
}
我遇到错误:
不存在类型变量T的实例,因此Integer符合 可迭代的。
我们非常感谢您的帮助。谢谢你提前。
答案 0 :(得分:3)
这里:
public static <T extends Iterable<T>> void print(T[] anArray)
您说您将传递类型扩展为Iterable
的元素数组,但您只想遍历此数组。您可以将方法签名更改为:
public static <T> void print(T[] anArray)
因为可以直接在for-each
中使用数组。
编辑:
您可能正在寻找这样的东西:
public static <E, I extends Iterable<E>> void print(I iterable) {
ArrayList<String> stringList = new ArrayList<>();
for(E element: iterable) {
stringList.add(element.toString());
}
String result = String.join(",", stringList);
System.out.println(result);
}
,但是自arrays are not Iterable起您就不能将其与数组一起使用,但是可以在for-each
中使用。