自定义泛型:泛型接口,泛型实现类,泛型方法
泛型接口
package genericity;
public interface Box<E> {
public void add(E e);
public E get(int i);
}
泛型实现类
package genericity;
public class BoxImp<E> implements Box<E>{
Object[] arr=new Object[10];
int i=0;
@Override
public void add(E e) {
arr[i]=e;
i++;
}
@Override
public E get(int i) {
return (E)arr[i];
}
}
测试
package genericity;
public class Test {
public static void main(String[] args) {
Box<String> box=new BoxImp<String>();
box.add("hello");
box.add("world");
System.out.println(box.get(0)+box.get(1));
}
}
类型限制<E extends Class>
接口
package genericity;
public interface Box<E extends Animal> {
public void add(E e);
public E get(int i);
}
实现类
package genericity;
public class BoxImp<E extends Animal> implements Box<E>{
Object[] arr=new Object[10];
int i=0;
@Override
public void add(E e) {
arr[i]=e;
i++;
}
@Override
public E get(int i) {
return (E)arr[i];
}
}
测试
package genericity;
public class Test {
public static void main(String[] args) {
Box<Dog> box=new BoxImp<Dog>();
Dog d1=new Dog();
box.add(d1);
}
}
package genericity;
public interface Animal {
public void play();
}
package genericity;
public class Dog implements Animal{
public String name;
@Override
public void play() {
// TODO Auto-generated method stub
}
}
最后,泛型看上去好像是很多种类型,其实在内存中只是一种,只不过是为了提供编译时类型检查,以防止出现运行时异常