泛型,当一个类、接口用了泛型后,其方法
有时为了规定返回类型和规定参数类型,但是不能用常规的类型来规定,这个时候可以利用上泛型,泛型,顾名思义,广泛的类型,这个类型是指类类型,很广。现在就将其当做是实体类类型来看。而返回类型或者参数类型没有具体指代是哪个实体类类型。所以强调一点就是方法如果想用泛型,那么必须得通过类或者接口。
第二个就是泛型可限制,可extends ...
第三个是通配符,与第二个连起来一块看:
public class CollectionGenFoo<T extends Collection> { private T x; public CollectionGenFoo(T x) { this.x = x; } public T getX() { return x; } public void setX(T x) { this.x = x; } }
实例化的时候可以这么写:
public class CollectionGenFooDemo { public static void main(String args[]) { CollectionGenFoo<ArrayList> listFoo = null; listFoo = new CollectionGenFoo<ArrayList>(new ArrayList()); //出错了,不让这么干。 //原来作者写的这个地方有误,需要将listFoo改为listFoo1 // CollectionGenFoo<Collection> listFoo1 = null; // listFoo1=new CollectionGenFoo<ArrayList>(new ArrayList()); System.out.println("实例化成功!"); } }
如果不能肯定是ArrayList类型的,那么可以按下面来办:
public class CollectionGenFooDemo { public static void main(String args[]) { CollectionGenFoo<ArrayList> listFoo = null; listFoo = new CollectionGenFoo<ArrayList>(new ArrayList()); //现在不会出错了 //原来作者写的这个地方有误,需要将listFoo改为listFoo1 CollectionGenFoo<? extends Collection> listFoo1 = null; listFoo1=new CollectionGenFoo<ArrayList>(new ArrayList()); System.out.println("实例化成功!"); } }