求助一个Java基础问题
如上图,在使用自定义注解的过程中发现一个不太理解的现象,求大佬指教!getAnnotation方法返回一个A类型的结果,我在hh这个参数的引用明确指定了泛型为MyAnnotation,但是在后面调用getAnnotation时依旧需要强转,这让我非常困惑...另外我还发现使用Annotation引用去指向getAnnotation方法时不需要强转...
源代码下面附上
@MyAnnotation("heihei")
public class TestAnnotation {
public void use(){
Class clazz=TestAnnotation.class;
Class<MyAnnotation> hh=MyAnnotation.class;
try {
Method method=clazz.getMethod("use");
MyAnnotation an=(MyAnnotation) clazz.getAnnotation(hh);
String vl=an.value();
System.out.println(vl);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
TestAnnotation t= new TestAnnotation();
t.use();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
泛型的生效在于编译期,java代码运行时会对泛型进行擦除,所以前面指定的泛型类型并没有意义,仍需进行类型强转