理解java中的'TypeElement'和'DeclaredType'接口

ove*_*nge 8 java annotations interface java-8

这两个接口的一个用途,就是编写注释处理器.

作为一个java初学者,我找到了这两个包添加的间接层: javax.lang.model.element&javax.lang.model.type提供有关java interface和java class混乱的元数据.

在此输入图像描述 .........

在此输入图像描述

java doc评论说,

TypeElement表示一个classinterface程序元素.提供对类型及其成员的信息的访问.注意,enum 类型是一种类,注释类型是一种类interface.

DeclaredType表示声明的类型,class类型或interface类型.这包括参数化类型,例如java.util.Set<String>原始类型.

两者的区别:

虽然a TypeElement表示a classinterface 元素,a DeclaredType表示a classinterface 类型,后者是前者的使用(或调用).

如何区分行话元素类型?例如:class 元素class 类型有何不同?请帮我举个例子.

Hol*_*ger 4

元素是用来组成软件的部分,即,顾名思义,包含可执行代码、描述一种存储以及将它们组合在一起的部分它\xe2\x80\x99是Java编程语言(作为一种面向对象语言)的一个特殊属性,即没有顶级函数或全局变量,它们是在其中定义的。ExecutableElementVariableElementTypeElementTypeElement

\n\n

换句话说,如果您编写一个 Java 程序,您将始终拥有至少一个.java包含至少一种类型声明的源文件。其中TypeElement可能至少包含一个ExecutableElement组成有用软件的软件。可以TypeElement包含多个ExecutableElements、VariableElements 和嵌套TypeElements。那\xe2\x80\x99就是你的程序的结构

\n\n
\n\n

类型是在声明成员局部变量时使用的东西,也是在声明超类或接口时使用的东西。但是让\xe2\x80\x99s 关注变量,以便更好地理解:

\n\n

变量可以有一个原始类型,这是编程语言固有的,它也可以有一个隐含存在的类型,例如当有一个类型时,你也可以在变量声明中X使用数组类型,但只能使用声明的类型type是一种类型,必须有一个相应的,代表开发人员编写的(或由工具生成的)内容。泛型还允许您组合类型,例如声明类型的变量,而和被声明的类型具有相应的程序元素\xe2\x80\xa6X[]TypeElementSet<? extends Number>SetNumber

\n