我正在使用Java 6的注释处理,即可以在其中找到的内容javax.annotation.processing
(不是Java 5的APT)。
我不知道各个之间的概念性区别是什么Element
,Type
以及Mirror
类是。由于我不太了解,很难对注释处理器进行有效编程。有多种方法可以在这些概念之间“转换”,但是我不确定使用它们时我在做什么。
例如,让我有一个实例AnnotationMirror
。
当我打电话时,getAnnotationType()
我得到了一个实例DeclaredType
(TypeMirror
无论出于何种原因实现)。
然后,我可以调用asElement()
它并获取的实例Element
。
发生了什么事?
类型的对象javax.lang.model.element.AnnotationMirror
表示代码中的注释。
声明的类型表示注释类。
它的元素是通用类(有关此问题的更多信息,请参见http://java.sun.com/javase/6/docs/api/javax/lang/model/element/TypeElement.html)。元素可能是类的通用版本,例如List
,其中声明的类型是参数化的版本,例如List<String>
。但是,我不确定注释类是否可以使用泛型,因此在这种情况下,区别可能无关紧要。
例如,假设您具有以下JUnit4方法:
@Test(expected = MyException.class)
public void myTest() {
// do some tests on some class...
}
AnnotationMirror表示@Test(expected = NullPointerException.class)
。声明的类型是org.junit.Test
类。该元素与不涉及泛型的元素大致相同。
问题内容: Java泛型中的擦除概念是什么? 问题答案: 基本上,这是通过编译器技巧在Java中实现泛型的方式。编译后的通用代码实际上只使用你谈论的任何地方(或其他一些类型参数),并且有一些元数据告诉编译器它确实是通用类型。 当你针对通用类型或方法编译某些代码时,编译器会弄清你的实际意思(即,类型参数的含义T),并在编译时验证你做对了事情,但是发出的代码再次在讨论就-编译器在必要时生成额外的强制类
7.1.3 类是类型概念的发展 如上所述,对象可以视为广义的数据,因此和普通数据一样属于某种数据类型。从图 7.3 可以看出,“人”和“电视机”就属于两种完全不同的对象类别,而 John 和 Mary 这两个“人” 对象则具有完全相同的数据构成和操作,只是各自的数据值不同。 用计算机解决问题时,首先需要明确问题中涉及哪些数据,并在程序中将这些数据用编 程语言提供的数据类型表示出来,然后再去考虑需要
问题内容: 我一直在阅读有关内核中的Linux内核和CFS调度程序的信息。我遇到了 vruntime (虚拟运行时),这是CFS调度程序背后的核心概念。我从“ Linux Kernel Development ”以及互联网上的其他博客中读到,但无法理解 vruntime 背后的基本计算。是否 vruntime 属于特定进程或做它属于一组进程具有相同的 nice值 。什么是 加权因子 ,如何计算?我
问题内容: 我试图理解模型上的“胖”与控制器上的“瘦”的概念,根据我一直在讨论的内容,我有以下示例(取自freenode的讨论): 问:在MVC范例中,其所说的Fat模型是瘦控制器。我在这里思考的是,如果我有很多方法(在控制器上)仅对CRUD使用了一些抽象方法(在模型上),那么我是在创建胖控制器而不是模型吗?还是他们说,胖模子,退回了什么却没有输入?这是我从未理解过的东西=)任何评论表示赞赏!非常
我正在创建一个组件,我希望元素类型是可配置的。 所以容器元素可以是上面的defaultProps中的元素,也可以是组件。 我不能得到的验证,我已经尝试了这个: 但它不能正确验证。 提供给的值的prop无效,
我正在尝试使用JSDoc语法记录我的函数。 上面的函数接受单个参数,可以是JQuery对象,也可以是。 getElementById返回值的有效JSDoc类型是什么? 例如,以下两项均有效: 另外,我以后在哪里可以找到这个?