/* * 未使用泛型面對的問題 * 一、能夠添加任何類型元素 * 二、類型轉換出現ClassCastException異常 * * 在集合中使用泛型,規定添加元素的類型 */ @Test public void test01() { List l = new ArrayList(); l.add(123); l.add(222); l.add("abc"); l.add(new a("lisi", 23)); l.add(333); // java.lang.ClassCastException 異常 // Collections.sort(l); List<Integer> l1 = new ArrayList<Integer>(); l1.add(123); l1.add(222); // l1.add("abc"); 不能添加 // l1.add(new a("lisi", 23)); 不能添加 l1.add(333); System.out.println(l1); TreeMap<a, Integer> m = new TreeMap<a, Integer>(); m.put(new a("lisi",23), 10000); m.put(new a("zhangs",34), 20000); m.put(new a("lisi",55), 100000); m.put(new a("zhangliu",12), 2000); m.put(new a("wangw",45), 20000); Set<Map.Entry<a, Integer>> set = m.entrySet(); Iterator<Map.Entry<a, Integer>> i = set.iterator(); while (i.hasNext()) { System.out.println(i.next()); } } /* * 未使用泛型面對的問題 * 一、能夠添加任何類型元素 * 二、類型轉換出現ClassCastException異常 * * 在集合中使用泛型,規定添加元素的類型 */ @Test public void test01() { List l = new ArrayList(); l.add(123); l.add(222); l.add("abc"); l.add(new a("lisi", 23)); l.add(333); // java.lang.ClassCastException 異常 // Collections.sort(l); List<Integer> l1 = new ArrayList<Integer>(); l1.add(123); l1.add(222); // l1.add("abc"); 不能添加 // l1.add(new a("lisi", 23)); 不能添加 l1.add(333); System.out.println(l1); TreeMap<a, Integer> m = new TreeMap<a, Integer>(); m.put(new a("lisi",23), 10000); m.put(new a("zhangs",34), 20000); m.put(new a("lisi",55), 100000); m.put(new a("zhangliu",12), 2000); m.put(new a("wangw",45), 20000); Set<Map.Entry<a, Integer>> set = m.entrySet(); Iterator<Map.Entry<a, Integer>> i = set.iterator(); while (i.hasNext()) { System.out.println(i.next()); } } public void test02() { /* * 通配符 ? * List<?> 是 List<Object> List<String> 的父類 * Collection< ? extends E > 是 Collection<E>及其子類 * Collection< ? super E > 是 Collection<E>及其父類 * 注意: * 一、不能在靜態方法中使用類的泛型 * 二、不能再try...catch中使用類的泛型 * 三、不容許向List<?>的類添加元素,null除外; */ List<Object> l1 = null; List<String> l2 = new ArrayList<String>(); List<?> l3 = null; // l1 = l2; l3 = l2; l3 = l1; // l3.add(123); l3.add(null); } @Test public void test03() { DAO<a> dao = new DAO<a>(); dao.map = new HashMap<String, a>(); dao.add("1001", new a("lisi",23)); dao.add("1002", new a("zhangs",20)); dao.add("1003", new a("wang5",35)); System.out.println(dao.get("1001")); //A [name=lisi, age=23] System.out.println(dao.list()); //[A [name=wang5, age=35], A [name=lisi, age=23], A [name=zhangs, age=20]] dao.update("1003", new a("wangw",12)); System.out.println(dao.get("1003")); //A [name=wangw, age=12] } class DAO<T> { Map<String, T> map = null; public void add(String id, T entity) { map.put(id, entity); } public T get(String id) { return map.get(id); } public void update(String id, T entity) { map.put(id, entity); } public void remove(String id) { map.remove(id); } public List<T> list() { List<T> list = new ArrayList<T>(); for (String s : map.keySet()) { list.add(map.get(s)); } return list; } }