泛型的好处
提高代码的复用性
特点解析
1.泛型类
package xinceshi;
class box<T>{
private T object;
public void set(T t) {object=t;}
public T get() {return object;}
}
public class Iotest{
public static void main(String[] args) {
box<Integer> box1=new box<Integer>();
box1.set(2);
box<String> box2=new box<String>();
box2.set("as");
System.out.println(box1.get()+"......"+box2.get());
}
}
2.泛型函数
class util{
public static <T> boolean compare(T a){
return false;
}
}
调用的时候和调用普通函数一样,不用加尖括号
3.边界符
public static <T extends Comparable<T>> int greaterThan(T[] array,T elem) {
int count=0;
for(T atom:array) {
if(atom.compareTo(elem)>0) {
count++;
}
}
return count;
}
4.通配符
看一条代码
box<Number> box1=new box<Number>();
box1.set(new Integer(1));
这段代码是完全没有问题的,因为多态。那么再看下面一种情况
我们改一下参数
public void set(box<T> t);
仍旧按照上面类似的方法来
box<Number> box1=new box<Number>();
box<Integer> box2=new box<Integer>();
box1.set(box2);
会出问题.尽管Integer和Number是继承关系,但是box1和box2并没有继承关系,所以会出错,但是我们可以修改通配符为
public void set(box<? extends T> t);
这样就没有问题了
类似的,有<? super T>
ps:用eclipse导入List的时候一定要看清有没有导入错误:<
另外,可以用下面这种方法来对泛型进行限制
public <T extends Number> T showKeyName(Generic<T> container){
关于泛型的基本内容就到这里