求助一个Java基础问题

发布于 2022-09-12 04:19:00 字数 956 浏览 34 评论 0


​​​​如上图,在使用自定义注解的过程中发现一个不太理解的现象,求大佬指教!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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

四叶草在未来唯美盛开 2022-09-19 04:19:00

泛型的生效在于编译期,java代码运行时会对泛型进行擦除,所以前面指定的泛型类型并没有意义,仍需进行类型强转

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文