java为什么是类。getAnnotation()要求我进行演员阵容?
我使用的是Java 1.6.025
我定义了一个注释:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Resource {
String value();
}
后来当我使用getAnnotation时:
Resource resource = (Resource)cls.getAnnotation(Resource.class);
编译器和IDE同意我必须强制转换结果,但getAnnotation在Java 1.5文档中声明为:
public <A extends Annotation> A getAnnotation(Class<A> annotationClass);
因为资源。类是类的类型,在我看来,这意味着cls。getAnnotation(Resource.class)应该返回Resource类型,我应该需要强制转换
我发现的所有使用getAnnotation的示例都没有类型转换,所以我一定是做错了什么
# 1 楼答案
什么是
cls
的类型?它是原始的还是原始的如果是原始类型
Class
,那么强制转换是必要的。如果你至少制作了Class<?>
而不是Class
,你就不再需要演员阵容了