泛型的使用讲解

import java.util.List;

/**
 * 背景: 平常定义变量:String name,这里变化的是值,类型是不会变,指定为String,如果需要类型也能变化呢?此时泛型就登场了:
 * 泛型:
 * T name:此时类型是变化的,如可以是String ,也可以是其他任意的类型变量,如StringBuffer,因此泛型其实就是变化的类型
 * 泛型的使用:用在类上和用在方法上,不管使用在哪里,都必须要先声明,声明的方式<T>,尖括号里面的值是随便定的,写成<E>也可以;
 * 泛型声明在类上:此时类里面的成员变量和方法都可以直接使用它,如下面的A<T>,这叫做泛型的声明,private  T t,这是泛型的使用,类比普通变量声明,要先声明后使用
 * 如:String name;是声明变量,后面就可以使用name="xiaoming"
 * 泛型声明在方法上:如下面的sayHi方法,void前面的<E> 是声明泛型,参数E e是使用泛型,如果没有<E>声明就会报错,如下写法:
 * public void say(E e){} 这里将会报E为不知道的类型,编译都不会通过
 * 在集合中使用泛型变量时,可以使用泛型的父类List<? super E> e,或者泛型的子类List<? extends E> e
 */


public class A<T>  {

   private T t;

   private String name;

   public <E> void sayHi(E e){

   }
   public <E> void swim(List<? extends E> e){

   }
   public <E> void fly(List<? super E> e){

   }

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 

posted @ 2019-05-10 10:19  yangxiaohui227  阅读(207)  评论(0编辑  收藏  举报