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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java 泛型的上限与下限、泛型通配符、泛型上下限

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

java 泛型的上限與下限
設置泛型對象的上限使用extends,表示參數類型只能是該類型或該類型的子類:

聲明對象:類名<? extends 類> 對象名

定義類:類名<泛型標簽 extends 類>{}

設置泛型對象的下限使用super,表示參數類型只能是該類型或該類型的父類:

聲明對象:類名<? super 類> 對象名稱

定義類:類名<泛型標簽 extends類>{}

public static void show(List<? extends Number> l){}

public static void show(List<? super String> l){}

泛型的上限

public static void main(String[] args) {Person<Integer> p1 = new Person<>();p1.setVal(99);Person<Double> p2 = new Person<>();p2.setVal(3.14);Person<String> p3 = new Person<>();p3.setVal("007");show(p1);//√show(p2);//√show(p3);//× }public static void show(Person<? extends Number> p){//此處限定了Person的參數類型只能是Number或者是其子類,而String并不屬于Number。System.out.println(p.getVal());}

泛型的下限

public static void main(String[] args) {Person<Integer> p1 = new Person<>();p1.setVal(99);//IntegerPerson<Double> p2 = new Person<>();p2.setVal(3.14);//DoublePerson<String> p3 = new Person<>();p3.setVal("007");//StringPerson<Object> p4 = new Person<>();p4.setVal(new Object());//Objectshow(p1);//×show(p2);//×show(p3);//√show(p4);//√}public static void show(Person<? super String> p){System.out.println(p.getVal());}

很好的例子!

package generic; import java.util.ArrayList; import java.util.List; public class GenericDemo3 {public static void main(String[] args) {//因為show方法是用List<?>通配符接收的,所以可以是任意類型!List<String> l1 = new ArrayList<>();//new ArrayList<String>()show(l1);List<Double> l2 = new ArrayList<>();show(l2);List<Number> l3 = new ArrayList<>();show(l3); List<Object> l4 = new ArrayList<>();show(l4);//使用up方法的話接收類型為Number或者其子類//up(l1);//錯誤,因為up方法接收類型為Number或者其子類,l1(String)不符合!up(l2);up(l3);//使用down方法的話接收類型為Number或者其父類//down(l2);errordown(l3);down(l4);}public static void down(List<? super Number> l){for (Object object : l) {System.out.println(object);}}public static void up(List<? extends Number> l){for (Object object : l) {System.out.println(object);}}public static void show(List<?> l){for (Object object : l) {System.out.println(object);}}}

總結

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

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