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。

你可能感兴趣的:(java,泛型类是什么)