java之泛型
阿新 • • 發佈:2018-06-25
一次 數據 addall sta AC 必須 推薦 string ext
1 /* 2 * a. 泛型的好處 3 * 提高安全性(將運行期的錯誤轉換到編譯期) 4 * 省去強制類型轉換的麻煩 5 * b. 泛型基本使用 6 * <>中放的必須是引用數據類型 7 * c.泛型使用的註意事項 8 * 前後的泛型必須一致,或者後面的泛型可以省略不寫(1.7新特性菱形泛型) 9 */ 10 public static void main(String[] args) { 11 12 ArrayList<Person> list = newArrayList<Person>(); 13 list.add(new Person("張三", 19)); 14 list.add(new Person("李四", 20)); 15 Iterator<Person> it = list.iterator(); 16 while (it.hasNext()) { 17 Person p = it.next(); 18 System.out.println(p.getName() + "..." + p.getAge()); //張三...19 李四...20 19 20 //System.out.println(it.next().getName() + "..." + it.next().getAge()); 21 //張三...20 當使用next()方法的時候需要註意,不能直接用it.next()調用屬性或方法,只能調用一次next()方法,否則就會造成數據錯位 22 } 23 } 24 25 /////////////////////////////////////////////////////////////////////// 26 27 public class Demo3_Generic { 28 29 public static void main(String[] args) {30 31 } 32 33 } 34 35 interface Inter<T>{ 36 public void show(T t); 37 38 } 39 40 class Deom implements Inter<String>{ 41 //第一種實現類加泛型,推薦用這種方法 42 @Override 43 public void show(String t) { 44 System.out.println(t); 45 } 46 47 } 48 49 class Demo2<T> implements Inter<T>{ 50 //第二種實現類加泛型,因為沒有必要在類上加泛型 51 @Override 52 public void show(T t) { 53 System.out.println(t); 54 } 55 56 } 57 58 //////////////////////////////////////////////////////////////////////////// 59 60 public class Demo4_Generic { 61 62 /* 63 * A: 泛型通配符<?> 64 * 任意類型,如果沒有明確,那麽就是Object以及任意的Java類 65 * B: ? extends E 66 * 向下限定,E及其子類 67 * C: ? super E 68 * 向上限定,E及其父類 69 */ 70 public static void main(String[] args) { 71 72 //List<?> list = new ArrayList<String>(); 73 ArrayList<Person> list1 = new ArrayList<>(); 74 list1.add(new Person("張三", 23)); 75 list1.add(new Person("李四", 24)); 76 77 ArrayList<Worker> list2 = new ArrayList<>(); 78 list2.add(new Worker("王五", 25)); 79 80 list1.addAll(list2); 81 82 System.out.println(list1); 83 84 } 85 86 } 87 88 /////////////////////////////////////////////////////////////////
java之泛型