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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java泛型上下限

發布時間:2025/3/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java泛型上下限 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

  java的泛型上下限不是很好理解,尤其像我這種菜雞。反反復復看了好幾遍了...,真是...

一、簡單的繼承體系

class Person{}class Student extends Person{}class Worker extends Person{}

二、泛型上限(extends?關鍵字)

public static void upperBound(List<? extends Person> list, Person p){//正確,因為null沒有類型信息 list.add(null);//錯誤,因為list的參數類型可能是Person的子類list.add(p);①//成功獲取if(list.size() > 0){Person pp = list.get(0);②}}

  ①處的錯誤在于list的參數類型是不確定的,其參數類型可能是 Person的子類,子類集合(List)不能添加父類的元素。測試如下:

public static void testUpperBound(){ArrayList<Student> slist = new ArrayList<Student>();Person p = new Person();upperBound(slist, p);//無法添加成功}

  如何解決泛型上限添加問題,可以使用泛型方法,如下:

public static <T extends Person> void upperBound2(List<T> list, T p){list.add(p);} public static void testUpperBound2(){ArrayList<Person> plist = new ArrayList<Person>();Person p = new Person();Student s = new Student();upperBound2(plist, p);upperBound2(plist, s);}

  也就是說,使用泛型上限add方法時,集合參數類型 和 元素參數類型 要一致,這樣添加的時候才不會有矛盾。看一下eclipse中對upperBound2(plist, s);這個函數調用的提示,如下:

  可見,T類型最終會解析為 泛型的最上限類型,Student s相應的向上轉型。

?

  接著說?② 處,為什么能獲取成功呢?泛型上限嘛,至少上限的類型是確定的,所有的上限類型的子類都可以進行向上轉型,自然獲取是不成問題了。

?

三、泛型的下限

public static void lowerBound(List<? super Student> list){Person var = new Person();//錯誤,list的參數類型可能是 Student,這樣就不能添加父類Person了,所以 變量var的類型 必須是 Student或者 Student的子類list.add(p);①//正確Student s = new Student();list.add(s);} public static void testlowerBound(){ArrayList<Person> list = new ArrayList<Person>();lowerBound(list);}

  ①處添加失敗,告訴我們,泛型下限使用add方法添加元素時,元素的參數類型必須是 下限 或者 下限的子類型。否則會出現子類集合添加父類元素。

?

public static void lowerBound2(List<? super Person> list){Person p = new Person();list.add(p);//獲取,不能編譯Person as = list.get(0);①} public static void testlowerBound2(){ArrayList<Person> list = new ArrayList<Person>();lowerBound2(list);}

  ①處獲取失敗了,我們看一下eclipse提示我們該怎么辦?

  將 第二個方法 將"as"的類型更改為"Object" ?和 泛型的下限 結合一下考慮一下,add(e)方法在正確添加后,都會成為Object對象,在使用get(index)方法時,會轉換為?

? super Person類型(可能是Person類型,也可能是Person的父類類型,甚至是Object),執行Person as = list.get(0),那么就有了 向下轉型。java中無法保證向下轉型是安全的。所以①處不能編譯。

四、泛型上限最常見的一個應用

List<Person> plist = new ArrayList<Person>(); List<Student> slist = new ArrayList<Student>();plist.addAll(slist);

五、泛型下限最常見的一個應用

Set<Student> set = new TreeSet<Student>(new Comparator<Person>() {@Overridepublic int compare(Person o1, Person o2) {return 0;} });

六、泛型上下限一個綜合的例子

  注:個人瞎掰的...,就是將上面兩個例子結合在一起!

Set<Person> set = new TreeSet<Person>(new Comparator<Person>() {@Overridepublic int compare(Person o1, Person o2) {return 0;} }); List<Student> slist = new ArrayList<Student>(); List<Worker> wlist = new ArrayList<Worker>(); set.addAll(slist); set.addAll(wlist);

?

  接下來,研究一下泛型的擦除...

?

轉載于:https://www.cnblogs.com/hujunzheng/p/5351697.html

總結

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

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

主站蜘蛛池模板: 国产91丝袜 | 国产成人短视频在线观看 | 国产成人无码精品久久久久 | 久草播放 | 最新免费av网站 | 成人精品影视 | 中文字幕精品久久久久人妻红杏ⅰ | 亚洲一区观看 | 91国内精品视频 | 9cao| 亚洲欧美偷拍视频 | 中文天堂资源在线 | 永久免费AV无码网站韩国毛片 | 欧美三级黄 | 天天摸天天做天天爽水多 | 91午夜精品亚洲一区二区三区 | 欧美性爱精品在线 | www四虎影院| 久久成人免费视频 | 亚洲三级精品 | 丝袜制服影音先锋 | 在线国产精品一区 | 美女被男人c | 黄色大片久久 | 男女视频一区二区 | 黄色在线资源 | 亚洲视频在线免费观看 | 久久金品| 黑人巨大精品人妻一区二区 | 日韩日韩日韩日韩日韩 | 日韩欧美高清视频 | 国产一级特黄 | av资源新版在线天堂 | 亚洲精品视频一区二区三区 | 爱情岛论坛成人av | 中文字幕影片免费在线观看 | 一区二区三区四区欧美 | 国产午夜精品一区二区三区嫩草 | 亚洲大胆视频 | jizz成熟丰满日本少妇 | 奶罩不戴乳罩邻居hd播放 | 黄色大片91 | 在线观看成人小视频 | 中文字幕亚洲乱码熟女一区二区 | 日韩视频免费观看 | 日韩国产第一页 | 91不卡视频 | 污污视频免费看 | 欧美做爰性生交视频 | 国产毛片在线 | 亲嘴扒胸摸屁股免费视频日本网站 | 久久久久网站 | 黄色一级网址 | 丝袜一区二区三区 | av影片在线看| 久久丫精品久久丫 | 久久香蕉av| 亚洲AV成人无码网站天堂久久 | 制服丝袜在线一区 | 亚洲欧美日本一区二区三区 | 少女情窦初开的第4集在线观看 | 婷婷综合在线视频 | 美女色av | av性天堂网| 亚洲人xxx | 国内自拍偷拍 | 蜜臀人妻四季av一区二区不卡 | 99热99re6国产在线播放 | 肉嫁高柳家在线看 | av永久免费观看 | www.av在线免费观看 | 国产一在线 | 国产又粗又猛又爽又黄91 | 欧美无极品 | 久久久久久电影 | 一区二区在线视频观看 | 成熟妇人a片免费看网站 | 看片网站在线观看 | 免费伊人 | 午夜伦理视频 | 亚洲一区二区三区人妻 | 国产人妖一区二区 | 日本理论片 | 正在播放久久 | 一区二区亚洲 | 亚洲第一成人网站 | 青青草国产一区 | 污污视频免费看 | 全部毛片永久免费看 | 日韩色中色| 欧美三级午夜理伦 | 黄网站色| 亚洲专区欧美专区 | 污片在线免费观看 | 97干干 | 精品777 | 欧美69久成人做爰视频 | av香蕉网| avtt亚洲天堂 |