首选,咱们说一下,为何要用泛型,泛型来解决什么问题. 泛型解决, 某一个集合类内部添加多个类的某一种类的对象 之前咱们想用一个类,来解决这个问题,咱们能够这样java
Class Test { private Object obj; public void setObj(Object ){ this.obj=obj; } public Object getObj(){ return this.obj } } //缺点是:向上转化的弊端,没法调用内部对象的自有方法,只能存取. //另外一种方法也能够写出无数个,适配不一样类内部类型,固然这样写会不少 Class StringTest { private String obj; public void setObj(String ){ this.obj=obj; } public String getObj(){ return this.obj } } 缺点是:累不累啊,,我都累了.想存多少个得写多少个类.
泛型不但使代码复用并且解决了向上转型的缺点. 泛型的写法: 类型参数(泛型参数)由尖括号包围,多个参数由逗号分隔,如 或 <T, E>。 建议书写:习惯上使用单个大写字母,一般状况下,K 表示键,V 表示值,E 表示异常或错误,T 表示通常意义上的数据类型。 泛型方法和泛型类; 泛型类:ide
public class Test { public static void main(String[] args){ Person<String> person=new Person<String>(); person.setT("一个泛型类"); System.out.println(person.getT()); } } class Person<T>{ T t; public T getT() { return t; } public void setT(T t) { this.t = t; } @Override public String toString() { return "Person{" + "t=" + t + '}'; } }
泛型方法:ui
public class test1 { public static void main(String[] args){ Person1 person = new Person1(); person.doubleT("泛型方法"); } } class Person1{ public <T> T doubleT(T t){ return t; } }
List <? extends Fruit> 意思: List中全部元素都是Fruit的子类(包含自己), List <? super Fruit> 意思: List中全部元素都是Fruit的父类(包含自己)this