日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java学习之路(七):泛型

發布時間:2025/7/25 java 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java学习之路(七):泛型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

泛型的概述和基本使用

作用:把類型明確的工作推前到創建對象或者調用方法的時候

泛型是一種參數化類型,把類型當做參數一樣傳遞來明確集合的元素類型

泛型的好處

  • 提高安全性
  • 省去強轉的麻煩

泛型的基本使用

  • 聲明集合泛型的格式:List<String> li = new ArrayList<String>();
  • <>中存放的必須是引用數據類型

泛型的注意事項

  • 默認聲明一個泛型集合,前后的類型要一致
  • jdk1.7以上的新特性:在聲明泛型類型的時候可以只聲明前面的泛型(菱形泛型)
  • 集合聲明泛型:代表此類或者子類都可以成為集合的元素

  • 聲明的泛型類型一定要是引用類型

泛型ArrayList的遍歷

package lesson03;import java.util.ArrayList; import java.util.Iterator; import java.util.List;public class Demo01 {public static void main(String[] args){List<String> li = new ArrayList<String>();li.add("A");li.add("B");li.add("C");Iterator<String> iterator = li.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}}} 第一種:String package lesson03;import java.util.ArrayList; import java.util.Iterator; import java.util.List;public class Demo01 {public static void main(String[] args){List<Student> li = new ArrayList<Student>();li.add(new Student(11,"null11"));li.add(new Student(22,"null22"));li.add(new Student(33,"null33"));li.add(new Student(44,"null44"));for(Student fo:li){System.out.println(fo);}}}class Student{int age;String name;public Student(int age, String name) {super();this.age = age;this.name = name;}public Student() {super();// TODO Auto-generated constructor stub }@Overridepublic String toString() {return "Student [age=" + age + ", name=" + name + "]";} } 第二種:Object

?

泛型類

定義格式:

  public class 類名<泛型類型1,...>? ? ? ? ? 注意:這里可以有多個,但不建議

  我們一般寫成? public class 類名<T>

注意事項:

  • 泛型類型必須是引用類型
  • T的值是在創建對象的時候出現的

泛型方法

定義格式:

  public 返回類型 方法名(泛型類型 變量名)

注意:對象方法的泛型參數要與類中的泛型一致,不可以使用其他的名字

順便補充:

泛型方法的定義:

  public 返回類型(T) 方法名(泛型類型T 變量名)

具體的例子:

class Student<T>{ //泛型類private T o; //泛型屬性public T getO() {return o;}public void setO(T o) {this.o = o;}public void fun1(T f1){} //泛型方法,無參數public T fun2(int val){ //泛型方法,有參數return null;} }

?

泛型接口

其實也就是:

  public interface 接口名<數據類型>

使用場景:Dao (數據訪問層)

泛型的高級使用(通配符)

  • <?>? ?表示任意類型,如果沒有明確表示,那么就是Object以及任何java類
    • 一般是在傳入參數的時候用的,表示接受任何類型
  • ? extends E? ?向下限定,E以及其子類
    • addAll方法,如果T是一個父類,那么添加的列表可以是子類,但是被添加的類表不能是子類
  • ? super E? 向上限定,E以及其父類

增強for循環

  簡化數組和Collection集合的遍歷

格式:

for(元素數據類型? 變量:數組或者Collection集合){

  使用變量即可,這個變量就是數組或者Collection集合中的元素

}

其實在之前的ArrayList遍歷中使用的便是增強for循環

注意:增強for循環不能邊遍歷,邊刪除元素,增強for循環的內部還是調用了

?

可變參數

  定義方法的時候不知道我們該定義多少個參數。

格式:

  修飾符? 返回值類型? 方法名(數據類型...變量名){}

注意事項:

  • 這里的變量在內部就封裝成了一個數組
  • 如果一個方法有可變參數,并且有多個參數,可變參數要放在最后面

補充:

Arrays工具類的asList()方法的使用

List<String> li = Arrays.asList("A","B","C"); System.out.println(li);

?

在Arrays工具類的asList方法中就是使用了可變參數

Collection中的toArray(T[] a)將泛型轉化為數組

package lesson05;import java.util.ArrayList; import java.util.List;public class Demo01 {public static void main(String[] args) {List<String> li = new ArrayList<String>();li.add("A");li.add("B");li.add("C");String[] arr = new String[3];li.toArray(arr);for(String fo:arr){System.out.println(fo);}}}

?

接下類是一個小例子

package lesson06; //一個例子 //學生類 //班級集合 //學校集合import java.util.ArrayList; import java.util.List;public class Demo1 {public static void main(String[] args) {List<Student> class_li = new ArrayList<Student>();class_li.add(new Student(1,"null1"));class_li.add(new Student(2,"null2"));class_li.add(new Student(3,"null3"));class_li.add(new Student(4,"null4"));List<List<Student>> school_list = new ArrayList<List<Student>>();school_list.add(class_li);for(List<Student> class_item:school_list){for(Student stu_item:class_item){System.out.println(stu_item);}}} } class Student{int age;String name;public Student() {super();}public Student(int age, String name) {super();this.age = age;this.name = name;}@Overridepublic String toString() {return "Student [age=" + age + ", name=" + name + "]";}} List嵌套List

?

轉載于:https://www.cnblogs.com/smiling-crying/p/9363597.html

總結

以上是生活随笔為你收集整理的Java学习之路(七):泛型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。