[java]代码库
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<Integer> list = new ArrayList<Integer>();
// 集合list 只能存放 整型数据
list.add(1);
list.add(2);
list.add(3);
// 集合遍历 获取
print(list);
// double 类型
List<Double> list1 = new ArrayList<Double>();
// 集合list 只能存放 整型数据
list1.add(1.2);
list1.add(233.3);
list1.add(3.3);
print(list1);
}
// 为什么报错? 1: ? 通配符 通用性的泛型方法 目标 通用性方法 可以打印任意类型的集合
// 2: 自定义泛型方法 方法的返回类型前 添加<T> template E element Map <K,V> key value
// 泛型方法 通用性
// <A> 方法返回值之前
public <T> void print(List<T> 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 <T> void change(T[] arr) {
T temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
@Test
public void test3() {
// 测试泛型类模板
Map<String, String> map = new HashMap<String, String>();
Generic<String> g = new Generic<String>("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<Integer> list) {
// for (int i = 0; i < list.size(); i++) {
// int a = list.get(i);
// System.out.println(a);
// }
// }
}