jdk1.5新特性之泛型总结2


泛型除了可以用在变量上,还可以用在方法上和类上.

自定义泛型一般用<T>或者<E>来声明.

1.用在方法上.在返回值类型前声明.

例如:

//将一个Object对象转换成指定的类型.

public static <T>T convert(Object  obj)

{

return (T)obj;

}

实际使用时,指定的是什么类型 则T就是什么类型.

2.用在类上

当一个类中有多个方法都用到了泛型.如果都定义成泛型方法,则这些泛型间没有关联.

Class Dao

{

public <T>void add(T t){}
public <T>T findByID(int ID)
{
return null;

}

}//这两个方法中的T没有关联,有可能 出现"添加了一只猫,但是查找到一只狗"的情况.

为了统一,这时可以将泛型定义在类上 Class Dao<T>,这样类中所有的方法的泛型T都是同一个类型.

在Class Dao<T>中如果有静态方法要使用泛型,只能在该方法上单独定义.

注意:

当一个变量被声明为泛型时,只能被实例变量、方法和内部类调用,而不能被静态变量和静态方法调用。因为静态成员是被所有参数化的类所共享的,所以静态成员不应该有类级别的类型参数。

3.关于泛型的类型推断.
这个非常复杂.只能记住下面两个特殊的例子了...
//将数组中数据拷贝到集合中
public <T>void(Vector<T> v,T[] t){}  如果Vector<String> 则T的类型就是String 数组必须也是String[] 这是泛型的传播..

//讲数组中的数据拷贝到数组中
public <T>void(T[] t1,T[] t2){}  如果t1和t2的类型不一致,则向上取他们的最小父类,比如Integer和Float   则T的类型是Number


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值