美文网首页
Java泛型中E、T、K、V等的含义

Java泛型中E、T、K、V等的含义

作者: jiezzy | 来源:发表于2020-08-21 15:51 被阅读0次

    E - Element (在集合中使用,因为集合中存放的是元素)

    T - Type(Java 类)

    K - Key(键)

    V - Value(值)

    N - Number(数值类型)

    ? - 表示不确定的java类型

    S、U、V - 2nd、3rd、4th types

    至于代表若干类的,放在尖括号内的 通配符 ?:<?>,还分 上限通配符 (Upper Bounded Wildcards) 和 下限通配符 (Lower Bounded Wildcards)。

    上限通配符 <? extends U> 可以代表这个未知类型 U,或者 通过关键字 extends 所能想象出的 U 类的任何一个子类。同样,下限通配符 <? super L> 可以代表这个未知类型 L,或者 通过关键字 super 所能想象出的 L类的任何一个超类。

    这里分别以多个接口 interface 和 多个类 class 为基础, 创建 继承关系。

    并以通过编译的代码, 证明以上论点成立。

    public class UP_Interface { 
    
    public static void main(String args[]){ 
    /********************************************
     * 此处 extends 表示 有上界的统配符 ?,上界为  C2
     * 由此定义的引用 listUpper可以作为 
     * 接下来的 7 种 子泛型类型的 ArrayList 的引用来使用。 
     **********************************************/
    List<? extends C2> listUpper;//上界统配符 ?, 上界为  C2
    listUpper=new ArrayList<C2>();//能存储 C2 D1 D2 E1 E2 E3 E4
    listUpper=new ArrayList<D1>();//能存储    D1    E1 E2  
    listUpper=new ArrayList<D2>();//能存储       D2       E3 E4
    listUpper=new ArrayList<E1>();//能存储          E1             
    listUpper=new ArrayList<E2>();//能存储             E2             
    listUpper=new ArrayList<E3>();//能存储                E3             
    listUpper=new ArrayList<E4>();//能存储                E4
                         
    /*************************************************
     * super 表示有下界的统配符 ? ,下界为  C2 , 
     * 由此定义的引用 listLower 可以作为 
     * 接下来的 7 种 子泛型类型的 ArrayList 的引用来使用。  
     ***************************************************/
    List<? super C2> listLower;
    listLower=new ArrayList<A1>(); //能存储 A1          B1 B2       C1 C2    D1 D2 E1 E2 E3 E4
    listLower=new ArrayList<A2>(); //能存储    A2          B2       C1 C2    D1 D2 E1 E2 E3 E4
    listLower=new ArrayList<A3>(); //能存储       A3          B3       C2 C3 D1 D2 E1 E2 E3 E4
    listLower=new ArrayList<A4>(); //能存储          A4       B3 B4    C2 C3 D1 D2 E1 E2 E3 E4
    listLower=new ArrayList<B2>(); //能存储                B2       C1 C2    D1 D2 E1 E2 E3 E4
    listLower=new ArrayList<B3>(); //能存储                   B3       C2 C3 D1 D2 E1 E2 E3 E4
    listLower=new ArrayList<C2>();// 能存储                            C2    D1 D2 E1 E2 E3 E4
        }
    
    
    image.png
    
    /********************************************
     * 此处 extends 表示 有上界的统配符 ?,上界为  C2
     * 由此定义的引用 listUpper可以作为 
     * 接下来的 7 种 子泛型类型的 ArrayList 的引用来使用。 
     **********************************************/
       List<? extends C2> listUpper;//统配符 ? 的上界为  C2
    listUpper=new ArrayList<C2>();//能存储 C2 D2 E3 E4
    listUpper=new ArrayList<D2>();//能存储 D2 E3 E4       
    listUpper=new ArrayList<E3>();           
    listUpper=new ArrayList<E4>();
    /*************************************************
     * super 表示有下界的统配符 ? ,下界为  C2 , 
     * 由此定义的引用 listLower 可以作为 
     * 接下来的 7 种 子泛型类型的 ArrayList 的引用来使用。  
     ***************************************************/
    List<? super C2> listLower;
    listLower=new ArrayList<A1>(); //能存储 A1 B1 B2 C1 C2    D1 D2 E1 E2 E3 E4
    listLower=new ArrayList<B2>(); //能存储 B2       C1 C2    D1 D2 E1 E2 E3 E4
    listLower=new ArrayList<C2>();// 能存储 D2 E3 E4
        }
    }
    
    image.png

    相关文章

      网友评论

          本文标题:Java泛型中E、T、K、V等的含义

          本文链接:https://www.haomeiwen.com/subject/nqgujktx.html