一、为什么使用泛型程序设计
泛型程序设计(Generic Programming)意味着编写的代码可以被很多不同类型的对象所重用。
在Java中增加泛型类之前,泛型程序设计是用继承实现的。
代码如下:
public class TestGeneric
{
public static void main(String[] args)
{
ArrayList array=new ArrayList();
array.add(4, 0);
int result=(int)array.get(0);//在这里必须添加强制类型转换,不然编译器会报错
}
}
class ArrayList
{
private Object[] elementDate=new Object[5];
public Object get(int i)
{
return elementDate[i];
}
public void add(Object o,int i)
{
elementDate[i]=o;
}
}
这种方法有个不便之处:当获取一个值时必须进行强制类型的转换。
二、定义简单泛型类
public class TestGeneric
{
public static void main(String[] args)
{
ArrayList array=new ArrayList();
array.add(4, 0);
int result=(int)array.get(0);//不能将基类将之转换为父类
Animal<Dog> animal=new Animal<>();
Dog dog=new Dog();
dog.setName("卡菲");
animal.setAnimalClass(dog);
System.out.println(animal.getAnimalClass().getName());
}
}
class ArrayList
{
private Object[] elementDate=new Object[5];
public Object get(int i)
{
return elementDate[i];
}
public void add(Object o,int i)
{
elementDate[i]=o;
}
}
class Animal<T>
{
private T animalClass;//字段
public Animal()
{
this.animalClass=null;
}
public void setAnimalClass(T animalClass)
{
this.animalClass=animalClass;
}
public T getAnimalClass()
{
return this.animalClass;
}
}
class Dog
{
private String name;
public Dog()
{
this.name=null;
System.out.println("这是一个狗的类型");
}
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return this.name;
}
}