例如:
Class<String> c = String.class;
我认为,String的Class对象可能有一个方法可以知道它是否对String类型起作用。
所以,不需要类型参数。
答案 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驱动程序您希望列中的数据转换为特定的类和编译器,您将从该方法返回该类型,因此你不需要演员。