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 }
  • 相关阅读:
    手机储存卡被写保护怎样删掉
    EXT.NET复杂布局(四)——系统首页设计(下)
    排序算法——选择排序
    NET 程序员十种必备工具 目录
    三种序列化体式格式
    Limitations of SharePoint Web Services
    How to: Update List Items
    哄骗JQuery直接调用asp.net后台办法
    jquery Dialog 弹出窗插件
    EXT.NET高效开发(四)——实用技巧
  • 原文地址:https://www.cnblogs.com/jack4738/p/6962184.html
Copyright © 2011-2022 走看看