【问题标题】:Java: reflection (at runtime) versus mirroring (at annotation processing)Java:反射(在运行时)与镜像(在注释处理时)
【发布时间】:2010-12-16 20:15:27
【问题描述】:

我了解以下概念之间的一般差异

  • 反射(在运行时使用Class, Method, Field, Annotation, ...完成),以及
  • 镜像(在注释处理期间使用TypeMirror, TypeElement, ...完成)。

但是有人可以深入比较这两个概念(或将我指向一个资源,它在哪里完成)?

例如,哪个概念提供了另一个不提供的信息......

谢谢。

【问题讨论】:

    标签: java reflection types mirroring annotation-processing


    【解决方案1】:
    • 反射类用于表示正在运行的 JVM 中的对象类。反射是一个非常古老的概念,从一开始就存在于 Java 中。因此,它在某些领域有点笨拙,已经扩展以适应新的语言结构(尤其是泛型)。
    • javax.lang.model 中的类用于处理Java 源代码。它们是在泛型已经存在并且可以(并且必须)更广泛地支持它们时设计的,因为它们是在类型擦除发生之前使用的。

    【讨论】:

    • 谢谢。但是,正如我所提到的,一般概念是已知的,我希望进行深入的分析。顺便说一句,我认为反射已被扩展以支持泛型的说法是错误的,正如您自己提到的,它们在运行时被删除。
    • 哦,我明白了,通过说 java.lang.reflect 是为泛型扩展的,您可能指的是java.lang.reflect.TypeVariable。嗯,没用过,会通知自己的...
    • @java.is.for.desktop:对象的类型参数被删除,但字段、方法和类定义中的类型参数没有。
    【解决方案2】:

    我想你会在this paper找到答案。

    【讨论】:

    • 感谢这篇论文,但它真的很难阅读,因为它是为研究受众准备的。如果能从技术角度简单描述一下就好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    相关资源
    最近更新 更多