java 泛型的上限与下限、泛型通配符、泛型上下限
生活随笔
收集整理的這篇文章主要介紹了
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 泛型的上限与下限、泛型通配符、泛型上下限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 边缘检测的简单例子(MATLAB)
- 下一篇: sql怎么修改服务器角色,sql角色服务