java泛型总结

泛型的好处

提高代码的复用性

特点解析

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){


关于泛型的基本内容就到这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值