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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Java 理解泛型的基本含义

發布時間:2023/11/27 生活经验 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 理解泛型的基本含义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java 泛型

Java 泛型(generics)是 JDK 5 中引入的一個新特性, 泛型提供了編譯時類型安全檢測機制,該機制允許程序員在編譯時檢測到非法的類型。

泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。

?


泛型方法

你可以寫一個泛型方法,該方法在調用時可以接收不同類型的參數。根據傳遞給泛型方法的參數類型,編譯器適當地處理每一個方法調用。

下面是定義泛型方法的規則:

  • 所有泛型方法聲明都有一個類型參數聲明部分(由尖括號分隔),該類型參數聲明部分在方法返回類型之前(在下面例子中的<E>)。
  • 每一個類型參數聲明部分包含一個或多個類型參數,參數間用逗號隔開。一個泛型參數,也被稱為一個類型變量,是用于指定一個泛型類型名稱的標識符。
  • 類型參數能被用來聲明返回值類型,并且能作為泛型方法得到的實際參數類型的占位符。
  • 泛型方法體的聲明和其他方法一樣。注意類型參數只能代表引用型類型,不能是原始類型(像int,double,char的等)。

實例:

public class ElementDemo {public static void main(String[] args) {//<Integer>運行時類型//使用泛型后,如果實例化是定義的類型與對象傳入的類型不一致,就會在編譯時期報錯。Test<Integer> t1 = new Test<>();t1.add(666); Test<String> t2 = new Test<>();t2.add("cjj");}
}/*** "E" 在這里并沒有實際意義,你也可以用別的字母代替* 它的作用就是在實例化Test類的時候,傳入什么類型它就調用什么類型*/
class Test<E>{public void add(E e) {System.out.println(e);}
}

注意:

泛型的命名只要符合標識符的命名規則即可
習慣上泛型一般只使用一個大寫字母進行命名

??? <T> type
?? ?<E> element 元素類型
?? ?<K> key
?? ?<V> value
?? ?<R> result/return

泛型向下兼容

<? extends 類/接口>

import java.util.ArrayList;
import java.util.List;public class ElementDemo {public static void main(String[] args) {//實例化一個Integer類型的數組列表對象,里面存儲的數據都是int型數據List<Integer> in = new ArrayList<>();in.add(1);in.add(2);in.add(3);in.add(4);in.add(5);in.add(6);//實例化一個Double類型的數組列表對象,里面存儲的數據都是Double類型的List<Double> dos = new ArrayList<>();dos.add(3.6);dos.add(4.2);dos.add(6.8);dos.add(7.7);dos.add(0.2);//調用方法
        print(in);print(dos);}// 寫一個新的方法來遍歷元素類型是數字的列表// 元素類型是Number或者是其子類// ? extends 類/接口 表示傳入這個類/接口或者是其子類/子接口對象// 所能傳入的元素的最大類型限定為Number// 規定了泛型的上限public static void print(List<? extends Number> list) {//在方法體里面不能再往對象里添加元素,null除外list.add(null);//打印對象里面的元素
        System.out.println(list);}
}

向上造型規定了泛型的上限,上限的子類都可以向泛型方法傳入對象。

泛型向下兼容

<? extends 類/接口>

import java.util.ArrayList;
import java.util.List;public class ElementDemo1 {public static void main(String[] args) {List<String> str = new ArrayList<>();str.add(0, "cjj");print(str);}// 泛型的下限// 傳入元素類型是String及其父類的列表// ? super 類/接口 表示傳入這個類/接口及其父類/父接口的對象// 表示傳入的最小類型是String    public static void print(List<? super String> list) {//方法體里面可以添加元素list.add("add");for(Object o : list){System.out.println(o);}}
}

向上造型規定了泛型的下限,下限的fu類都可以向泛型方法傳入對象。

?

轉載于:https://www.cnblogs.com/chuijingjing/p/9509367.html

總結

以上是生活随笔為你收集整理的Java 理解泛型的基本含义的全部內容,希望文章能夠幫你解決所遇到的問題。

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