【问题标题】:java.net.URLClassLoader doesn't add class annotationsjava.net.URLClassLoader 不添加类注释
【发布时间】:2013-12-22 12:51:07
【问题描述】:

在开发 ant 任务以使用注释为项目自动生成一些 gui 代码时,因为我更喜欢声明性方法,所以我使用 java.net.URLClassLoader 动态添加 我的课程路径中的课程。
在扫描类以查找类级别注释时,虽然没有找到它们
他们存在。
例如

@AutoGenerateGUI
class LoginBean

有没有其他人遇到过这个问题并可以提供解决方案?
(子类化 URLClassLoader 以在内部将 loadClass 调用视为 loadClass(Class clazz, true) 也不起作用)

感谢https://stackoverflow.com/users/1103872/marko-topolnik 此外: 检索动态加载的类的注解总是返回 com.sun.proxy.$Proxy[x],所以为了获得原始注解类型,我必须使用构造 URLClassLoader loads Annotation as com.sun.$Proxy$27 迭代代理对象实现的接口。虽然这不是必需的,但确实有其他解决方案,例如使用 instanceof 失败。

【问题讨论】:

    标签: java annotations classloader urlclassloader


    【解决方案1】:

    我的猜测是 AutoGenerateGUI 是您的自定义注释,而您没有为其指定正确的保留策略。默认为RetentionPolicy.CLASS,加载类后会丢弃注解。注解在运行时将无法通过反射获得。

    【讨论】:

    • 是的,完美。我监督。
    猜你喜欢
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 2014-04-02
    相关资源
    最近更新 更多