我有以下方法要传递不同类型的数组:
private < E > void print(E[] arr) {
for(E s: arr) {
System.out.println(s + " ");
}
}
当我将List<Double>
数组传递给print
方法时,出现以下错误:
The method print(E[]) in the type IAnalysisMocker is not applicable for the arguments (List<Double>)
有什么建议可以解决吗?
答案 0 :(得分:5)
如果要传递列表(或任何可迭代的),请将方法签名更改为:
private <E> void print(Iterable<E> iterable) {
for(E s: iterable) {
System.out.println(s + " ");
}
}
由于错误显示为The method print(E[]) .. is not applicable for the arguments (List<Double>)
,因此在预期数组(List<E>
)时,您无法传递E[]
。
答案 1 :(得分:2)
双打列表与双打数组不同。将参数更改为List<E> arr
或实际将其传递给数组。
private <E> void print(List<E> list) {
如果你想让它成为最通用的&#34;那么Iterable<E>
应该是参数的类型,因为Java for-each循环适用于该接口的任何实现者:
private <E> void print(Iterable<E> list) {
答案 2 :(得分:0)
最灵活的解决方案可能是使用Iterable<E>
和Arrays.asList
。
private <E> void print(Iterable<E> list) {
for(E s: list) {
System.out.println(s + " ");
}
}
private <E> void print(E[] list) {
print(Arrays.asList(list));
}
然后你可以print
几乎任何东西,并且将调用一个或另一个方法。