//提供两种使用情况,第二种情况定义前者是后者的子类-类型通配方式
package ming;
import java.util.ArrayList;
import java.util.Collection; public class GenericMethodTest { static <T> void fromArraytoCollection(T[] a, Collection<T> c) {
for (T o : a) {
c.add(o);
}
} public static void main(String[] args) {
// TODO Auto-generated method stub
//T stand for Object
Object[] oa = new Object[100];
Collection<Object> co = new ArrayList<Object>();
fromArraytoCollection(oa,co); //T stand for Number
Integer[] ia = new Integer[100];
Float[] fa = new Float[100];
Collection<Number> cn = new ArrayList<Number>(); fromArraytoCollection(ia,cn);
fromArraytoCollection(fa,cn); } }
package ming; import java.util.ArrayList;
import java.util.Collection;
import java.util.List; public class GenericMethodTest { static <T> void fromArraytoCollection(Collection<? extends T> from,
Collection<T> to) {
for (T ele : from) {
to.add(ele);
}
} public static void main(String[] args) {
List<Object> ao = new ArrayList<Object>();
List<String> as = new ArrayList<String>();
// string is subclass of object
fromArraytoCollection(as, ao); } }