• 泛型通配符 ?


    泛型通配符 ? 任意类型 

    注意:在泛型中是不能用多态的

    例:

    List<Object> i = new ArrayList<String>();

    ×   错误原因是不同泛型之间不能相互赋值。

    例:

     1 package jihe;
     2 import java.util.*;
     3 public class Fanxing2 {
     4 
     5     public static void main(String[] args) {
     6         List<Object> i1 = new ArrayList<Object>();
     7         List<String> i2 = new ArrayList<String>();
     8         List<Number> i3 = new ArrayList<Number>();
     9         List<Integer> i4 = new ArrayList<Integer>();
    10         List<Double> i5 = new ArrayList<Double>();
    11         print(i1);
    12         print(i2);
    13         print(i3);
    14         print(i4);
    15         print(i5);
    16         
    17     }
    18     static void print(List<?> i) {
    19     }
    20 }

    带修饰范围的 修饰符 ? extend

    泛型通配符 Number 或者Number的任何子类 i3 i4 i5 通过

    package jihe;
    import java.util.*;
    public class Fanxing2 {
        public static void main(String[] args) {
            List<Object> i1 = new ArrayList<Object>();
            List<String> i2 = new ArrayList<String>();
            List<Number> i3 = new ArrayList<Number>();
            List<Integer> i4 = new ArrayList<Integer>();
            List<Double> i5 = new ArrayList<Double>();
            print(i1);
            print(i2);
            print(i3);
            print(i4);
            print(i5);
        }
        static void print(List<? extends Number > i) {
        }
    }

    ? super Number Number类或者Number的任何父类 i1 i3 通过

    package jihe;
    import java.util.*;
    public class Fanxing2 {
        public static void main(String[] args) {
            List<Object> i1 = new ArrayList<Object>();
            List<String> i2 = new ArrayList<String>();
            List<Number> i3 = new ArrayList<Number>();
            List<Integer> i4 = new ArrayList<Integer>();
            List<Double> i5 = new ArrayList<Double>();
            print(i1);
            print(i2);
            print(i3);
            print(i4);
            print(i5);
        }
        static void print(List<? super Number > i) {
        }
    }

    ? extends Coparable 让i1 和 i3 不通过 首先找String Integer Double的共性 Coparable

     1 package jihe;
     2 import java.util.*;
     3 public class Fanxing2 {
     4     public static void main(String[] args) {
     5         List<Object> i1 = new ArrayList<Object>();
     6         List<String> i2 = new ArrayList<String>();
     7         List<Number> i3 = new ArrayList<Number>();
     8         List<Integer> i4 = new ArrayList<Integer>();
     9         List<Double> i5 = new ArrayList<Double>();
    10         print(i1);
    11         print(i2);
    12         print(i3);
    13         print(i4);
    14         print(i5);
    15     }
    16     static void print(List<? extends Comparable> i) {
    17     }
    18 }
  • 相关阅读:
    nginx日志格式配置
    shell入门(一)
    shell批量创建随机文件名格式文件
    Centos7 下安装配置tomcat7
    Linux安装VM虚拟化软件
    mysql初探
    java.lang.ClassNotFoundException: org.apache.commons.collections.FastHashMap
    HTTP Status 500 ? Internal Server Error
    如何使用Chrome浏览器查看网页的响应头
    Servlet的API
  • 原文地址:https://www.cnblogs.com/jack4738/p/6962184.html
Copyright © 2020-2023  润新知