Ste*_* B. 33
这样可以使用泛型类型的方法 -
Class<Foo> klass = Foo.class;
Foo f = klass.newInstance();
Foo f = klass.cast(Object);
Run Code Online (Sandbox Code Playgroud)
Bil*_*ard 14
在语言指南的1.5版本的泛型部分中简短地提到了这一点:
更令人惊讶的是,班级已经普及.类文本现在用作类型标记,提供运行时和编译时类型信息.这样可以在新的AnnotatedElement接口中使用getAnnotation方法示例的静态工厂样式:
<T extends Annotation> T getAnnotation(Class<T> annotationType);
Run Code Online (Sandbox Code Playgroud)
这是一种通用方法.它从参数中推断出其类型参数T的值,并返回一个适当的T实例,如下面的代码片段所示:
Author a = Othello.class.getAnnotation(Author.class);
Run Code Online (Sandbox Code Playgroud)
在泛型之前,您必须将结果转换为Author.此外,您无法让编译器检查实际参数是否表示Annotation的子类
真正的原因是Neil Gafter:
当我们在JDK5中向Java添加泛型时,我将类java.lang.Class更改为泛型类型.例如,String.class的类型现在是Class <String>.Gilad Bracha为此创造了类型代币.我的目的是启用一种特定风格的API,Joshua Bloch称之为THC或Typesafe Heterogenous Container模式.
归档时间: |
|
查看次数: |
50754 次 |
最近记录: |