为什么Class类需要是Generic?

时间:2014-04-07 22:42:32

标签: java generics

例如:

Class<String> c = String.class;

我认为,String的Class对象可能有一个方法可以知道它是否对String类型起作用。

所以,不需要类型参数。

1 个答案:

答案 0 :(得分:3)

如果你问为什么Class现在是通用的,那么类型安全的通用方法可以接受Class参数来提供类型绑定。

考虑EnumSet。创建空EnumSet MyEnum的方法是使用noneOf

EnumSet<MyEnum> set = EnumSet.noneOf(MyEnum.class)

由于Class是通用的,因此编译器知道静态noneOf方法将返回Enum<MyEnum>。这个习惯用法广泛用于持久性和远程处理API,例如JPA类型安全查询和Spring数据投影,您可以在编译时提供类文字,编译器会理解API将返回该类的实例。 / p>

标准JRE中的示例:遗留ResultSet#getObject(int columnIndex)方法返回Object,然后您必须投射该ResultSet#getObject(int columnIndex, Class<T> type)。新的{{1}}告诉JDBC驱动程序您希望列中的数据转换为特定的类编译器,您将从该方法返回该类型,因此你不需要演员。