Java:反射(运行时)与镜像(在注释处理中)的区别

9
我了解反射和镜像的概念之间的一般区别,其中:

  • 反射(在运行时使用Class、Method、Field、Annotation等
  • 镜像(在注释处理期间使用TypeMirror、TypeElement等)。

但是有人能否深入比较这两个概念(或者指导我去哪里找到这样的资源)?

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

谢谢。

2个回答

5
  • 反射类用于表示在运行JVM中的对象的类。自从Java诞生以来,反射就是一个非常古老的概念。因此,在一些领域中它有点笨重,已经扩展以适应新的语言结构(特别是泛型)。
  • javax.lang.model中的类用于处理Java源代码。它们在泛型已存在时被设计出来,并且可以(也必须)更广泛地支持它们,因为它们在类型擦除发生之前被使用。

谢谢。但是,正如我所提到的,一般的概念已经被了解,我希望进行深入分析。顺便说一句,我认为反射已经扩展支持泛型的说法是错误的,正如你自己提到的,在运行时它们被擦除了。 - java.is.for.desktop
噢,我明白了,你说 java.lang.reflect 被扩展用于泛型,你可能是指 java.lang.reflect.TypeVariable。哦,从未使用过它,我会自己了解一下... - java.is.for.desktop
2
@java.is.for.desktop:对象的类型参数被擦除,但是字段、方法和类定义中的类型参数不会被擦除。 - Michael Borgwardt

1

2
谢谢您提供的论文,但是由于它是面向研究人员的,所以阅读起来确实很困难。如果您能从技术角度简要描述一下,那就太好了。 - Amir Moghimi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接