AnnotationWord文档下载推荐.docx
- 文档编号:13213552
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:13
- 大小:27.95KB
AnnotationWord文档下载推荐.docx
《AnnotationWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《AnnotationWord文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
structuralmetadata和descriptivemetadata,简而言之,就是结构性的元数据和描述性的元数据两种,当然这里的两种划分是否准确有待商榷,但是却让大致明白了它所应用的场景和场合。
那是否有童鞋依然对Metadata一头雾水呢?
下面我们来举几个小例子,帮助大家感知一下元数据吧。
比如我们从网上搜索一部电影的信息,电影本身是一个数据,可以播放和观看娱乐消遣。
但我们如何才能找到我们想要的电影呢?
想一想,对了,我们可以按照主演、导演、上映时间、影片类型、观众评分、票房收入和发行公司等诸多的信息进行搜索。
这些我们搜索的条件,就是我们这里所谓的关于电影本身的metadata,他们都是用来描述电影本身的数据,但是不影响电影本身的播放和观看的。
[参考资料3]
2.
JavaAnnotation的历史简述
在引入Annotation之前,Java中其实已经有了类似的东西,比如transient和@deprecated。
在2004年正式被JCP接受,在JDK5中正式引入的,主要是通过开发包中的apt命令来进行处理。
在JDK6中,将其集成到javac,允许用户自定义Annotation,为用户自行扩展开启了通道。
3.
Annotation在Java中的应用
Annotation在Java可以像public,final等语法修饰一样使用,用以修饰用于包、类型、构造方法、方法、成员变量、参数、本地变量的声明中。
另外对于允许自定义参数的Annotation还可以在声明中使用参数。
在Java中主要用在以下几个方面:
∙
文档编制
通过@Documented来标注是否需要在javadoc中出现。
编译器检查
通过Annotation的使用,可以调整和控制编译器的使用以及让编译器提供关于代码的更多的检查和验证,比如@Override,@SuppressWarning.
代码分析
这个是我们开发者从中受益良多的部分,通过Annotation的使用,可以让我们在代码运行中动态得去控制系统的行为,从而省去之前诸多的配置和冗余代码。
这个会
在后续的实例中加以详述。
这里有一点需要说明的是,Annotation不影响已有代码的执行,但是会影响系统在运行中的行为,这两个在不同的层面上,一个是已有的
代码执行层,另外一个是JVM会根据Annotation的指令修改系统行为的。
4.
Annotation在Java中的使用方法
下面我们来直接看一个Annotation的例子,感受一下它的威力吧。
[java]
viewplain
copy
1.public
class
AnnotationOverrideTest
{
2.
@Override
public
String
toString()
/////---
可以当做修饰符一样直接使用,非常熟悉吧
3.
return
"
Override
the
of
superclass"
;
4.
}
5.
6.
//也可以分为单独一行
7.
toString123()
//提示编译错误
8.
9.
10.
11.
大家可以看到@+Annotation的名称就可以直接使用了,这里使用了@Override这个Annotation来让编译器检查toSring()这个方法是否覆盖了基类的方法。
如果基类并没有这个方法的话,则会报错。
在toString123()这个方法中,就会提示错误信息:
1.AnnotationOverrideTest.java:
7:
method
does
not
override
or
implement
a
from
super-type
^
这个@Override可以帮助我们的攻城师尽可能早的发现代码中隐藏的问题,如果未使用它的话,可能只有在运行过程中,才会有机会发现这个问题,不是吗?
5.
Annotation的分类
Annotation按照一定的规则,可以分为若干种类型。
首先,根据Annotation本身的特征有没有输入参数,可以分为以下两个类型:
MarkerAnnotation
标识Annotation,该Annotation没有参数输入,更多类似于标识一个东西,类似于Java语言中的java.io.Serialable之类的接口,并无需要实现的方法。
示例:
@Override,用以标识该方法需要覆盖父类的同名方法,Annotation无参数输入。
MarkerAnnotationTest
//
---
marker
annotation
out
information
6.}
普通Annotation
其可以基于Annotation进行参数的设置,例如@SuppressWarnings。
示例如下:
1.//
省略其他方法
2.@SuppressWarnings(value={"
unchecked"
"
fallthrough"
})
3.public
void
generalAnnotationMethod()
//省略方法体
5.}
在普通的Annotation中,通过选择设置参数值,可以提供更为强大的功能控制。
这里的@SuppressWarnings只是提供了一个参数的使用,更多方法的使用可以参考其JavaAPI的说明。
第二种分类方法是根据Annotation的应用对象来划分,分为标注代码的Annotation和用来标注Annotation的Annotation,即Meta-Annotation,元标注。
标注代码的Annotation
我们平时定义和使用的绝大多数都是用来标注代码的Annotation,直接应用在java中的包、类,方法和变量之中。
具体的例子就不再赘述了。
标注Annotation的Annotation
此类Annotation用以定义Annotation之时,需要进行声明和说明的内容,例如,@Target(应用的对象),@Rention(代码,class或运行环境),@Documented(出现在爱javadoc中),@Inherted(标注类型是否可以被继承)。
更为详细的内容将在下一节详述。
第三种分类方法就是按照Annotation的具体功能来划分,主要有以下三种类型,基本和Annotation的设计初衷相契合。
文档标注
主要是@Documented,用以标注是否在javadoc中
编译检查
主要在编译过程中,给Java编译器若干指令,检查Java代码中是否存在若干题,改变编译器的动作或者行为,通过Annotation的使用,可以调整和控制编译器的使用以及让编译器提供关于代码的更多的检查和验证。
主要有:
@Override,@SuppressWarning,
此类Annotation是在我们开发中使用最多的,主要是通过Annotation提供给代码更多的额外特性和设置,在Java运行过程中发挥作用。
常见的是在Spring或者Hibernate等框架中出现的@Controller,@Service,@Bean,@Table,@Enitty等等.
总结:
我们这所以给Annotation如此之详尽的分类,不是为了分类而分类,而是期望通过分类,让大家对Annotation有更深入的理解,每一种类型都是Annotation的都是一种理解Annotation的角度和方式。
总之,我的分类不完全准确,却可以给你更多的看待问题的角度。
6.
Java语言内置的Annotation简介
6.1
基本内置类型
在Java1.5之后,引入了三个基本的Annotation类型,分别为:
@Override,@Deprecated,@SuppressWarnings.
1.
@Override
java.lang.Override,作用于方法级别,只存在与编译阶段使用,由于其定义涵盖@Target(value=METHOD),@Retention(value=SOURCE)。
其为MarkerAnnotation,仅用作标识方法,表示其重载了父类的方法;
如果使用了@Override,实际上却并未覆盖父类方法,java编译器将提示一个编译错误。
我们其实,可以将其理解为一个强化语法检查的断言,辅助开发者减少错误。
2.
@Deprecated
标识Annotation,作用于方法各
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Annotation