我正在使用Java 1.6.0_25.
我有一个定义的注释:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Resource {
String value();
}
Run Code Online (Sandbox Code Playgroud)
后来当我使用getAnnotation时:
Resource resource = (Resource)cls.getAnnotation(Resource.class);
Run Code Online (Sandbox Code Playgroud)
编译器和IDE同意我必须转换结果,但getAnnotation在Java 1.5文档中声明为:
public <A extends Annotation> A getAnnotation(Class<A> annotationClass);
Run Code Online (Sandbox Code Playgroud)
由于Resource.class是Class类型,在我看来这意味着cls.getAnnotation(Resource.class)应该返回类型Resource,我应该需要强制转换.
我使用getAnnotation找到的所有示例都没有强制转换,所以我一定做错了.
java ×1