CF/AT 部分簡單思維題總結
阿新 • • 發佈:2022-05-19
泛型的概念
jdk 5.0新增的特性
在集合中使用泛型
① 集合介面或集合類在jdk5.0時都修改為帶泛型的結構。 ② 在例項化集合類時,可以指明具體的泛型型別 ③ 指明完以後,在集合類或介面中凡是定義類或介面時,內部結構(比如:方法、構造器、屬性等)使用到類的泛型的位置,都指定為例項化的泛型型別。 比如:add(E e) --->例項化以後:add(Integer e) ④ 注意點:泛型的型別必須是類,不能是基本資料型別。需要用到基本資料型別的位置,拿包裝類替換 ⑤ 如果例項化時,沒有指明泛型的型別。預設型別為java.lang.Object型別。 ...自定義泛型結構:泛型類、泛型介面;泛型方法
泛型使用要點
@Test public void test1(){ //如果定義了泛型類,例項化沒有指明類的泛型,則認為此泛型型別為Object型別 //要求:如果大家定義了類是帶泛型的,建議在例項化時要指明類的泛型。 Order order = new Order(); order.setOrderT(123); order.setOrderT("ABC"); //建議:例項化時指明類的泛型 Order<String> order1 = new Order<String>("orderAA",1001,"order:AA"); order1.setOrderT("AA:hello"); } @Test public void test2(){ SubOrder sub1 = new SubOrder(); //由於子類在繼承帶泛型的父類時,指明瞭泛型型別。則例項化子類物件時,不再需要指明泛型。 sub1.setOrderT(1122); SubOrder1<String> sub2 = new SubOrder1<>(); sub2.setOrderT("order2..."); } @Test public void test3(){ ArrayList<String> list1 = null; ArrayList<Integer> list2 = new ArrayList<Integer>(); //泛型不同的引用不能相互賦值。 // list1 = list2; Person p1 = null; Person p2 = null; p1 = p2; } //測試泛型方法 @Test public void test4(){ Order<String> order = new Order<>(); Integer[] arr = new Integer[]{1,2,3,4}; //泛型方法在呼叫時,指明泛型引數的型別。 List<Integer> list = order.copyFromArrayToList(arr); System.out.println(list); } //泛型方法:在方法中出現了泛型的結構,泛型引數與類的泛型引數沒有任何關係。 //換句話說,泛型方法所屬的類是不是泛型類都沒有關係。 //泛型方法,可以宣告為靜態的。原因:泛型引數是在呼叫方法時確定的。並非在例項化類時確定。 public static <E> List<E> copyFromArrayToList(E[] arr){ ArrayList<E> list = new ArrayList<>(); for(E e : arr){ list.add(e); } return list; }