標籤:否則 generic extend stat ext 類型轉換 asn div tor
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 = new ArrayList<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 李四...2019 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 @Override43 public void show(String t) {44 System.out.println(t);45 }46 47 }48 49 class Demo2<T> implements Inter<T>{50 //第二種實作類別加泛型,因為沒有必要在類上加泛型51 @Override52 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 E66 * 向下限定,E及其子類67 * C: ? super E68 * 向上限定,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之泛型