- 由于对于一个集合来说,Collection<String>,Collection<Integer>都不是List<Object>的子类,所以在将集合作为方法的参数的时候Collection<Object>并不但能说是Collection<String>,Collection<Integer>的父类从而替代这两个类型的集合,示例如下:
在上面这个示例中,形参为Collection<Object>而实参为List<String>,显而易见这个程序连编译都通不过。package GenericMethod; import java.util.ArrayList; import java.util.Collection; import java.util.List; public class GenericMethodTest { static void fromArrayToCollection(Object[] a, Collection<Object> c){ for(Object o : a){ c.add(o); } } public static void main(String args[]){ String[] strArr = {"a", "b"}; List<String> strList = new ArrayList<>(); GenericMethodTest.fromArrayToCollection(strArr, strList); } }
- 所以带有泛型的方法格式应该是这个是这个样子的:
修饰符 <T,S> 返回值类型 方法名 (形参列表){ 方法体 }
具体的代码示例如下:
//使用带有泛型的方法格式是 // 修饰符<T,S> 返回值类型 方法名(形参列表){ //如果只涉及到一种泛型的话就不用,和S //方法体 //} //所以以上的方法应该改写为 //static <T> void formArrayToCollection(T[] a, Collection<T> c{ //方法体 //} package GenericMethod; import java.util.ArrayList; import java.util.Collection; public class GenericMethodTestCorrect { static <T> void fromArrayToCollection(T[] a, Collection<T> c){ for(T o : a){ c.add(o); } } public static void main(String args[]){ Object[] oa = new Object[100]; Collection<Object> co = new ArrayList<>(); fromArrayToCollection(oa, co); String[] sa = new String[100]; Collection<String> cs = new ArrayList<>(); fromArrayToCollection(sa,cs); } }
-
一下为不止一个泛型类型的示例
package GenericMethod; import java.util.ArrayList; import java.util.Collection; import java.util.List; public class ArgsTest { <T,S> void test(List<T> a, List<S> b){ for(int i=0; i<a.size(); i++){ System.out.println(a.get(i) + "," + b.get(i)); } } <T> void test2(Collection<? extends T> a, Collection<T> b){ for(T ele : a){ b.add(ele); } } public static void main(String args[]){ ArgsTest argsTest = new ArgsTest(); List<String> a = new ArrayList<>(); List<Integer> b = new ArrayList<>(); a.add("ads");a.add("zxc"); b.add(1);b.add(22); argsTest.test(a,b); Collection<Object> c = new ArrayList<>(); Collection<String> d = new ArrayList<>(); argsTest.test2(d,c); } }
java泛型(4) 泛型方法
猜你喜欢
转载自blog.csdn.net/weixin_39452731/article/details/81565972
今日推荐
周排行