package c.cn.itcast.generic; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Test; /** * 泛型 出现的原因: 集合处理 数据类型 任意 1: 数据安全 2: 模板 泛型写法 <对象类型> 结合集合一起使用 编译错误提前 运行错误 .class * 编译时错误 .java 编译生成.class <> 擦除 * * @author Administrator * */ public class GenericDemo1 { // @Test public void test() { // 指定集合容器存储数据类型 List list = new ArrayList(); // 集合list 只能存放 整型数据 list.add(1); list.add(2); list.add(3); // 集合遍历 获取 print(list); // double 类型 List list1 = new ArrayList(); // 集合list 只能存放 整型数据 list1.add(1.2); list1.add(233.3); list1.add(3.3); print(list1); } // 为什么报错? 1: ? 通配符 通用性的泛型方法 目标 通用性方法 可以打印任意类型的集合 // 2: 自定义泛型方法 方法的返回类型前 添加 template E element Map key value // 泛型方法 通用性 // 方法返回值之前 public void print(List list) { System.out.println(list); } /** * 数组交换 int double String 通用性的方法 接受任意类型 */ // @Test public void test2() { Integer[] arr = { 1, 2 }; String arr1[] = { "a", "b" }; change(arr); System.out.println(Arrays.toString(arr)); } private void change(T[] arr) { T temp = arr[0]; arr[0] = arr[1]; arr[1] = temp; } @Test public void test3() { // 测试泛型类模板 Map map = new HashMap(); Generic g = new Generic("hello"); String s = g.getT(); System.out.println(s); } // public void print(List list) { // for (int i = 0; i < list.size(); i++) { // Object a = list.get(i); // System.out.println(a); // } // } // public void print1(List list) { // for (int i = 0; i < list.size(); i++) { // int a = list.get(i); // System.out.println(a); // } // } }