文档章节

java中的注解

A__17
 A__17
发布于 2017/08/28 22:15
字数 567
阅读 2
收藏 0

1)自定义注解:

1)定义注解:
	语法:public [@interface](https://my.oschina.net/u/996807) 注解名{}
	举例:
		public [@interface](https://my.oschina.net/u/996807) MyAnnotation{
			String name() default "jack";
		}

2)定义注解的属性:
	语法:
		类型 属性名();
		类型 属性名() default 默认值;
	
	赋值:
		说明:在使用时,进行赋值。
		举例:@MyAnnotation(name="hello")
	
	特殊属性value:

		类型 value();
			只给value设值:	@MyAnnotation(value="hello") 或 @MyAnnotation("hello")
			给多个属性设值:@MyAnnotation(value="hello",name="aaa")
		
		类型[] value();
			只给value设值:	@MyAnnotation(value={"a","b"}) 或 @MyAnnotation({"a","b"}) 或 @MyAnnotation({"a"}) 或 @MyAnnotation("a")			
			给多个属性设值:同上。

	注意:注解的属性的类型只能是:基本类型、String、Class、枚举、注解类型 和 这些类型的一维数组。

2)元注解:

1)概念:加在注解上的注解。

2)常用的元注解:
	@Retention:注解的保留范围
		RetentionPolicy.SOURCE:	注解存在于源文件中
		RetentionPolicy.CLASS:		注解存在于字节码文件中
		RetentionPolicy.RUNTIME:	注解存在于运行时
		
	@Target:注解出现的位置
		eg:@Target(ElementType.METHOD)
			@Target({ElementType.FIELD,ElementType.METHOD})
			
	@Inherited:  被该元注解修饰的Annotation类将具有继承性,如果某个类使用了被@Inherited修饰的Annotation, 则该类的子类会自动加上这个被@Inherited修饰的Annotation。

	@Documented: 被该元注解修饰的Annotation类将被javadoc工具提取成文档。

3)注解处理器相关API:

1)java.lang.annotation.Annotation:
	说明:该接口是所有注解类的父接口。

2)java.lang.reflect.AnnotatedElement:	
	概念:表示一个正在VM中运行并且被注解修饰的元素(类、方法、字段等),该接口允许通过反射的方式来读取元素上的注解。
	
	实现类:java.lang.reflect包下的:Class、Constructor、Method、Field、Package
	
	说明:该接口中的方法返回的所有注解都是不可变的。

	该接口中的方法:
		1>getAnnotation(clazz)
			<T extends Annotation> T getAnnotation(Class<T> annotationClass):
			说明:如果该元素被指定类型的注解所修饰,则返回该注解,否则返回null。

		2>getAnnotations()	
			Annotation[] getAnnotations()
			说明:返回此元素上所有的注解。

		3>getDeclaredAnnotations()	
			Annotation[] getDeclaredAnnotations()
			说明:返回直接在该元素上修饰的所有的注解,该方法会忽略掉从父类继承过来的注解。
		
		4>isAnnotationPresent(clazz)
			boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
			说明:判断该元素是否被指定类型的注解修饰。

© 著作权归作者所有

共有 人打赏支持
下一篇: jdk工具--jps
A__17
粉丝 2
博文 100
码字总数 117532
作品 0
朝阳
私信 提问

暂无文章

oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
6
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
5
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
33
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部