zoukankan      html  css  js  c++  java
  • 泛型通配符 ?

    泛型通配符 ? 任意类型 

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

    例:

    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 }
  • 相关阅读:
    java中getResourceAsStream的问题 缓存
    springside 查询条件
    如何修改MySQL数据库引擎为INNODB
    获取用户真实 IP , 淘宝IP接口获得ip地理位置
    hibernate注解的CascadeType属性
    AssignmentHandler实现类用spring注入
    使用 jQuery dataTables
    转载:一致性 hash 算法( consistent hashing )
    转载:memcached完全剖析
    转载:连接MySQL数据库的两种方式介绍
  • 原文地址:https://www.cnblogs.com/jack4738/p/6962184.html
Copyright © 2011-2022 走看看