相关疑难解决方法(0)

为什么Class.getAnnotation()要求我进行演员表?

我正在使用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

27
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×1