zoukankan      html  css  js  c++  java
  • 泛型和泛型的通配符应用

    泛型以及通配符

    当使用泛型类或者泛型接口,传递的数据中,泛型的类型不确定,可以通过通配符表示<?>表示.一旦程序当中使用泛型通配符后,只能使用Object类中共性的方法. 集合中元素自身类型的方法无法使用.(这是一种多态的写法,)

    泛型作为形参写在方法参数列表内

    举个栗子:

    泛型应用在类中
    public class Pue<E>{
       private E age;
    public void set(E name){
      this.name=name;
    }
    }
    当我们使用泛型修饰一个类的时候,我们大多使用泛型来修饰成员变量和get  set方法以及构造方法
     泛型应用在方法中
    public static<E> void methods(E age){
    System.out.println(E.getClass());
    }
    当我们使用泛型修饰一个类的时候,在类的修饰符后面加上泛型的修饰符号<随意的符号就当定义变量>然后就可以在方法内使用泛型来修饰参数或者局部变量,

    备注;当我们调用了使用了带有泛型的方法或者,类,这个泛型一定会被固定.必须是确定的类型,输入的是什么参数,泛型会自动成为相同的类型.

    通配符,当我们需要对泛型进行限制的时候,java为我们提供了一个符号,通配符来对泛型进行限制,简称

    受限泛型

    受限泛型分为两种限制方式: 上限extends     下限super

    定义格式

    //定义方法 此时可以接受任意的数据类型
    public static void getElement(Collection<?> coll){//...}
    //定义方法,此时我只让方法接收数字类型 Number类型和Number的子类类型
    public static void getElement(Collection<? extends Number> coll){//....}
    //定义方法,此时我只让接收Number类型及其以上的类型
    public static void getElement(Collection<? super Number> coll){//...}

    通配符不能直接用来定义集合的数据类型,程序会混乱,并且数据类型被定义了通配符的集合无法存储任何类型的数据

    栗子:

    ArrayList<?> list= new ArrayList<>();

    上面这个集合现在无法储存任何的数据.

  • 相关阅读:
    LeetCode 842. Split Array into Fibonacci Sequence
    LeetCode 1087. Brace Expansion
    LeetCode 1219. Path with Maximum Gold
    LeetCode 1079. Letter Tile Possibilities
    LeetCode 1049. Last Stone Weight II
    LeetCode 1046. Last Stone Weight
    LeetCode 1139. Largest 1-Bordered Square
    LeetCode 764. Largest Plus Sign
    LeetCode 1105. Filling Bookcase Shelves
    LeetCode 1027. Longest Arithmetic Sequence
  • 原文地址:https://www.cnblogs.com/rosiness/p/14082548.html
Copyright © 2011-2022 走看看