java 泛型类是什么,java – 类的泛型性质是什么意思?什么是T?

类型参数< T>已添加到java.lang.Class以启用一个特定的idiom1 – 使用Class对象作为类型安全对象工厂。基本上,加入< T>让您以类型安全的方式实例化类,如下所示:

T instance = myClass.newInstance();

类型参数< T>表示类本身,使得能够通过存储类< T>来避免类型擦除的不愉快的影响。在通用类中或作为参数传递给通用方法。注意T本身不足以完成这个任务2:T的类型被擦除,所以它变成java.lang.Object在引擎盖下。

这里是一个经典的例子,其中< T>参数的类变得重要。在下面的示例中,Java编译器能够确保类型安全,允许您从SQL字符串和类< T>的实例生成类型化集合。注意,该类用作工厂,并且其类型安全性可以在编译时验证:

public static Collection select(Class c, String sqlStatement) {

Collection result = new ArrayList();

/* run sql query using jdbc */

for ( /* iterate over jdbc results */ ) {

T item = c.newInstance();

/* use reflection and set all of item’s fields from sql results */

result.add(item);

}

return result;

}

因为Java擦除了类型参数,使其成为java.lang.Object或者被指定为通用的upper bound的类,所以访问类< T>对象内部的select方法。由于newInstance返回类型< T>的对象,编译器可以执行类型检查,消除转换。

1 SUN Oracle已发布a good article explaining all this。

2这不同于没有类型擦除的泛型的实现,例如.NET中的一个。

3 Java Generics tutorial由Oracle。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值