考虑写一个方法,它用一个Object的数组和一个collection作为参数,完成把数组中所有object放入collection中的功能。下面是第一次尝试:static void fromArrayToCollection(Object[] a, Collection<?> c) {for (Object o : a) {c.add(o); // 编译期错误}}现在,你应该能够学会避免初学者试图使用Collection<Object>作为集合参数类型的错误了。或许你已经意识到使用 Collection<?>也不能工作。会议一下,你不能把对象放进一个未知类型的集合中去。解决这个问题的办法是使用generic methods。就像类型声明,方法的声明也可以被泛型化——就是说,带有一个或者多个类型参数。static <T> void fromArrayToCollection(T[] a, Collection<T> c){ for (T o : a) { c.add(o); // correct } }
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货