ElementType.CONSTRUCTOR
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践
自Java5.0版本惹人注解之后,它就成为了Java平台中异常重要的一部分。开辟过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated如许的注解。这篇文┞仿中,我将向大年夜家道述到底什么是注解,为什么要惹人注解,注解是若何工作的,若何编写自定义的注解(经由过程例子),什么情况下可以应用注解以及最新注解和ADF(应用开辟框架)。这会花点立时光,所认为本身预备一杯咖啡,让我们来进入注解的世界吧。
用一个词就可以描述注解,那就是元数据,即一种描述数据的数据。所以,可以说注解就是源代码的元数据。比如,下面这段代码:
- @Override
- public String toString() {
- return "This is String Representation of current object.";
- }
膳绫擎的代铝闼楝我重写了toString()办法并应用了@Override注解。然则,即使我不应用@Override注解标记代码,法度榜样也可以或许正常履行。那么,该注解表示什么?这么写竽暌剐什么好处吗?事实上,@Override告诉编译器这个办法是一个重写办法(描述办法的元数据),如不雅父类中不存在该办法,编译器便会报错,提示该办法没有重写父类中的办法。如不雅我不当心拼写缺点,例如将toString()写成了toStrring(){double r},并且我也没有应用@Override注解,那法度榜样依然能编译运行。但运行结不雅会和我期望的大年夜不雷同。如今我们懂得了什么是注解,并且应用注解有助于浏览法度榜样。
Annotation是一种应用于类、办法、参数、变量、构造器及包声明中的特别润饰符。它是一种由JSR-175标准选择用来描述元数据的一种对象。
@Documented –注解是否将包含在JavaDoc中
为什么要惹人注解?
假如你想为应用设置很多的常量或参数,这种情况下,XML是一个很好的选择,因为它不会同特定的代码相连。如不雅你想把某个办法声明为办事,那么应用Annotation会更好一些,因为这种情况下须要注解和办法慎密耦合起来,开辟人员也必须熟悉到这点。
另一个很重要的身分是Annotation定义了一种标准的描述元数据的方法。在这之前,开辟人员平日应用他们本身的方法定义元数据。例如,应用标记interfaces,注释,transient关键字等等。每个法度榜样员按照本身的方法定义元数据,而不像Annotation这种标准的方法。
今朝,很多框架将XML和Annotation两种方法结合应用,均衡两者之间的利弊。
Annotation是若何工作的?怎么编写自定义的Annotation?
在讲述这部分之前,建议你起首下载Annotation的示例代码AnnotationsSample.zip 。下载之后放在你习惯应用的IDE中,这些代码会赞助你更好的懂得Annotation机制。
编写Annotation异常简单,可以将Annotation的定义同接口的定义进行比较。我们来看两个例子:一个是标准的注解@Override,另一个是用户自定义注解@Todo。
- @Target(ElementType.METHOD)
- @Retention(RetentionPolicy.SOURCE)
- public @interface Override {
- }
对于@Override注释你可能有些疑问,它什么都没做,那它是若何检查在父类中有一个同名的函数呢。当然,不要惊奇,我是逗你玩的。@Override注解的定义不仅仅只有这么一点代码。这部分内容很重要,我不得不再次反复:Annotations仅仅是元数据,和营业逻辑无关。懂得起来竽暌剐点艰苦,但就是如许。如不雅Annotations不包含营业逻辑,那么必须有仁攀来实现这些逻辑。元数据的用户来做这个工作。Annotations仅仅供给它定义的属性(类/办法/包/域)的信息。Annotations的用户(同样是一些代码)来攫取这些信息并实现须要的逻辑。
我们来逐个讲述编写自定义Annotations的要点。膳绫擎的例子中,你看到一些注解应用在注解上。
J2SE5.0版本在 java.lang.annotation供给了四种元注解,专门注解其他的注解:
@Retention –什么时刻应用该注解
@Target? –注解用于什么处所
@Inherited – 是否许可子类持续该注解
@Documented–一个简单的Annotations标记注解,表示是否将注解信息添加在java文档中。
如今我们开端评论辩论文┞仿的最后一部分了。应用法度榜样框架,被称为ADF,由Oracle开辟用来创建Oracle融合应用。我们已经懂得了注解的优缺点,也知道若何编写自定义的注解,但我们应当将注解应用在ADF的哪部分呢?ADF是否供给了一些朴实的注解?很好的问题,确实袈溱ADF中大年夜量应用注解有一些限制。之前提到的应用框架如Spring和Hibernate应用AOP(面向侧面的法度榜样设计)。在AOP中,框架供给了一种机制,在事宜的预处理和后续处理中注入代码。例如:你有一个钩子用来在办法履行之前和之后添加代码,所以你可以在这些处所编写你的用户代码。ADF不应用AOP。如不雅我们有任何注解的用例可用,我们可能须要经由过程持续的方法实现。
推荐阅读
来了,支持 iOS 开发的 Kotlin/Native v0.4 发布
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 下面是 v0.4 中新平台库的使悠揭捉?示。Kotlin / Native v0.4 已宣布,这也恰是在 KotlinConf 2017 上宣>>>详细阅读
本文标题:Java中的注解是如何工作的
地址:http://www.17bianji.com/lsqh/38975.html
1/2 1