文档章节

java中的注解

A__17
 A__17
发布于 2017/08/28 22:15
字数 567
阅读 1
收藏 0
点赞 0
评论 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)
			说明:判断该元素是否被指定类型的注解修饰。

© 著作权归作者所有

共有 人打赏支持
A__17
粉丝 2
博文 89
码字总数 101178
作品 0
朝阳

暂无相关文章

R计算IV

参考文章 #读取文件 rawdata = read.csv("/path/to/csv/file",header=T) colnames(rawdata)[18] <- "y" //重命名因变量y #数据分区 训练集测试集 trainIdx <- sample(nrow(rawdata), round(......

火力全開 ⋅ 5分钟前 ⋅ 0

SQL老司机,在SQL中计算 array & map & json数据

摘要: 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primitive类型的数据。 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primi...

阿里云云栖社区 ⋅ 6分钟前 ⋅ 0

SQL老司机,在SQL中计算 array & map & json数据

摘要: 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primitive类型的数据。 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primi...

猫耳m ⋅ 16分钟前 ⋅ 0

关于ireport自定义变量类型为list的时候

自己摸石头过河,我真的应该去趟市中心图书馆,借本真正靠谱的教材 网上的东西,只有0.01%是有用的,还有0.99%是垃圾,剩下的99%是垃圾的复制品。。 哎!~ 问题是这样的,报表带sql,从db中获...

炑炑milina ⋅ 17分钟前 ⋅ 0

Spring mvc ContextLoaderListener 原理解析

对于熟悉Spring MVC功能,首先应从web.xml 开始,在web.xml 文件中我们需要配置一个监听器 ContextLoaderListener,如下。 <!-- 加载spring上下文信息,最主要的功能是解析applicationContex...

轨迹_ ⋅ 18分钟前 ⋅ 0

阿里云发布企业数字化及上云外包平台服务:阿里云众包平台

摘要: 阿里云正式发布旗下众包平台业务(网址:https://zhongbao.aliyun.com/),支持包括:网站定制开发,APP、电商系统等软件开发,商标、商品LOGO、VI、产品包装设计、营销推广、大数据人...

阿里云官方博客 ⋅ 19分钟前 ⋅ 0

Redis安装异常解决办法

官网地址:http://redis.io/ 官网下载地址:http://redis.io/download 1. 下载Redis源码(tar.gz),并上传到Linux 2. 解压缩包:tar zxvf redis-2.8.17.tar.gz 3. 进入解压缩后的文件夹:c...

slagga ⋅ 24分钟前 ⋅ 0

006. 深入JVM学习—年轻代

1. 年轻代图片 年轻代(Young)属于JVM堆内存空间的一个组成部分 所有使用关键字new新实例化的对象一定会在伊甸园区进行保存,而对于存活区保存的一定是已经在伊甸园区存在一段时间并且经过了...

影狼 ⋅ 25分钟前 ⋅ 0

如何成为一个合格的程序员

偶尔的,我会被人问道:如何成为一名优秀的程序员,更或者,如何成为一名程序员。每次人们问起,我都力图给出不同的答案。因此,我的答案是各种各样的。下面就是我认为的成为一名优秀的程序员...

柳猫 ⋅ 25分钟前 ⋅ 0

cups error_log日志暴增

日志内容 File \"/usr/lib/cups/notifier/dbus\" has insecure permissions 解决(未验证适用范围) sudo service cups stopsudo rm /etc/cups/subscriptions.conf*sudo rm -r /var/cac......

一介码夫_Hum ⋅ 29分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部