泛型
泛型的应用场景
泛型一般使用在集合上,使用了泛型的集合,这集合的所装载的元素类型就会确定下来;就好比缸是个集合,为了让这个缸只能装米, 就给这口缸贴上一个【米】,不允许这口缸来装其他的东西。我们有个List集合想让他只能放String类型元素,我们就给这个List添加String泛型,例如:List<String>
不使用泛型时的遇到的问题
public class YouXin01 { public static void main(String[] args) { List list = new ArrayList(); list.add(new A()); list.add(new B()); // 取出的是Object对象,不能调用A对象里的方法 System.out.println(list.get(0)); } } class A { public void test() { System.out.println("这是A"); } } class B { public void test() { System.out.println("这是B"); } }
使用泛型情况
List<A> list = new ArrayList<A>(); list.add(new A()); list.get(0).test(); //这时就可以调用了
泛型注意的地方
泛型里面写的是一个对象,不能写基本的数据类型,比如int要使用Integer。
泛型的使用
泛型使用在方法上
public class YouXin02 { public static void main(String[] args) { Integer[] arr3 = {10, 11, 12, 13, 14}; swap(arr3, 1, 3); System.out.println(Arrays.toString(arr3)); //结果: 10, 13, 12, 11, 14 } /** * 使用泛型方法 * 需要定义一个类型使用大写字母表示T: 这个T表示任意的类型 * 写在返回值之前 * ======表示定义了一个类型,这个类型是T * 那这样在方法里就可以使用这个类型T了 */ public static <T> void swap(T[] arr,int a,int b) { T temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; } }
泛型在类上的使用
public class YouXin03<T> { //直接在类名后定义 T aa; //在类里面可以直接使用T的类型 public void test11(T bb) {} //使用泛型类 /* * 注意: 这是错的,静态方法里是不能使用泛型的 * 在类上面定义的泛型,不能在静态方法里面使用 */ //public static void test12(T cc) {} }