Java自定义注解Annotation详解
注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
public @interface MyAnnotation {
//......
}
@MyAnnotation
public class AnnotationTest{ //......
}
Java中提供了四种元注解,专门负责注解其他的注解,分别如下:
@Retention元注解,表示需要在什么级别保存该注释信息(生命周期)。可选的RetentionPoicy参数包括:
RetentionPolicy.SOURCE: 停留在java源文件,编译器被丢掉
RetentionPolicy.CLASS:停留在class文件中,但会被VM丢弃(默认)
RetentionPolicy.RUNTIME:内存中的字节码,VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息
@Target元注解,默认值为任何元素,表示该注解用于什么地方。可用的ElementType参数包括
ElementType.CONSTRUCTOR: 构造器声明
ElementType.FIELD: 成员变量、对象、属性(包括enum实例)
ElementType.LOCAL_VARIABLE: 局部变量声明
ElementType.METHOD: 方法声明
ElementType.PACKAGE: 包声明
ElementType.PARAMETER: 参数声明
ElementType.TYPE: 类、接口(包括注解类型)或enum声明
@Documented注解将注解包含在JavaDoc中
@Inheried注解允许子类继承父类中的注解
以下写了一个模拟注解的案例:
首先写一个自定义注解@MyAnnotation,代码如下所示:
package com.pcict.anotation.test; import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD, ElementType.TYPE })
public @interface MyAnnotation {
// 为注解添加属性
String color(); String value() default "我是XXX"; // 为属性提供默认值 int[] array() default { 1, 2, 3 }; Gender gender() default Gender.MAN; // 添加一个枚举 // 添加枚举属性
MetaAnnotation metaAnnotation() default @MetaAnnotation(birthday = "我的出身日期为1988-2-18");
}
写一个枚举类Gender,模拟注解中添加枚举属性,代码如下所示:
package com.pcict.anotation.test; public enum Gender {
MAN {
public String getName() {
return "男";
}
},
WOMEN {
public String getName() {
return "女";
}
}; // 后面记得有“;”
public abstract String getName();
}
写一个注解类MetaAnnotation,模拟注解中添加注解属性,代码如下:
package com.pcict.anotation.test; public @interface MetaAnnotation {
String birthday();
}
最后写注解测试类AnnotationTest,代码如下:
package com.pcict.anotation.test; // 调用注解并赋值
@MyAnnotation(metaAnnotation = @MetaAnnotation(birthday = "我的出身日期为1988-2-18"), color = "red", array = {
23, 26 })
public class AnnotationTest { public static void main(String[] args) {
// 检查类AnnotationTest是否含有@MyAnnotation注解
if (AnnotationTest.class.isAnnotationPresent(MyAnnotation.class)) {
// 若存在就获取注解
MyAnnotation annotation = (MyAnnotation) AnnotationTest.class
.getAnnotation(MyAnnotation.class);
System.out.println(annotation);
// 获取注解属性
System.out.println(annotation.color());
System.out.println(annotation.value());
// 数组
int[] arrs = annotation.array();
for (int arr : arrs) {
System.out.println(arr);
}
// 枚举
Gender gender = annotation.gender();
System.out.println("性别为:" + gender);
// 获取注解属性
MetaAnnotation meta = annotation.metaAnnotation();
System.out.println(meta.birthday());
}
}
}
运行AnnotationTest,输出结果为:
aaarticlea/png;base64,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" alt="" />
Java自定义注解Annotation详解的更多相关文章
- Java注解(Annotation)详解
转: Java注解(Annotation)详解 幻海流心 2018.05.23 15:20 字数 1775 阅读 380评论 0喜欢 1 Java注解(Annotation)详解 1.Annotati ...
- JAVA自定义注解 ------ Annotation
日常开发工作中,合理的使用注解,可以简化代码编写以及使代码结构更加简单,下面记录下,JAVA自定义注解的开发过程. 定义注解声明类. 编写注解处理器(主要起作用部分). 使用注解. 相关知识点介绍, ...
- Java注解Annotation详解
从JDK5开始,Java增加了Annotation(注解),Annotation是代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相应的处理.通过使用Annotation,开发人员可 ...
- Java 基础之--注解Annotation详解
自定义注解入门: public @interface Annotation01 { //set default value ""; String value() default & ...
- 注解Annotation 详解(转)
要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5. ...
- Java自定义注解Annotation的使用
从 jdk5开始,Java增加了对元数据的支持,也就是Annotation,Annotation其实就是对代码的一种特殊标记,这些标记可以在编译,类加载和运行时被读取,并执行相应的处理.当然刚刚说了, ...
- Java Annotation详解 理解和使用Annotation
系统中用到了java注解: 查了一下如何使用注解,到底注解是什么: (1)创建方法:MsgTrace Java Class==> 在Create New Class中: name:输入MsgTr ...
- Java Annotation详解(二): 反射和Annotation
前面一篇文<Java Annotation详解(一): 理解和使用Annotation>中,我们或许会觉得,Annotation注释其实并没有多大的作用,除了几个内建的Annotation ...
- Java 注解用法详解——@SuppressWarnings
转自: https://www.cnblogs.com/fsjohnhuang/p/4040785.html Java魔法堂:注解用法详解——@SuppressWarnings 一.前言 编码时我 ...
随机推荐
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记10——三维天空的构建&三维粒子的实现&多游戏模型的载入
第23章 三维天空的构建 目前描述三维天空的技术主要包括三种类型,直接来介绍使用最广泛的模拟技术,详细的描述可以见作者的博文. 天空盒(Sky Box),即放到场景的是一个立方体.它是目前使用最广泛的 ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记7——DirectInput&纹理映射
第15章 DirectInput接口 DirectInput作为DirectX的组件之一,依然是一些COM对象的集合.DirectInput由IDirectinput8.IDirectInputDev ...
- 《java并发编程实战》读书笔记13--Java内存模型,重排序,Happens-Before
第16章 Java内存模型 终于看到这本书的最后一章了,嘿嘿,以后把这本书的英文版再翻翻.这本书中尽可能回避了java内存模型(JMM)的底层细节,而将重点放在一些高层设计问题,例如安全发布,同步策略 ...
- Centos6.9下安装OpenOffice 4.1.4
# 对一下时间,时间不准,解压不了yum install -y ntp unzipntpdate -u 202.112.10.36yum install libXext.x86_64 -yyum gr ...
- scp命令详解—跨服务器复制文件
scp在跨机器复制的时候为了提高数据的安全性,使用了ssh连接和加密方式,如果机器之间配置了ssh免密码登录,那在使用scp的时候密码都不用输入. 在服务器104.238.161.75上操作,将服务器 ...
- BC-NFS部署报错节点间磁盘wwid冲突
1.在部署公司的BC-NFS产品时,填好IP选好磁盘后,点击“创建”,就抛出如下提示: 2.关闭虚机,再打开虚机的控制台,点击磁盘,自定义serial number 3.启动虚机,再次登陆,查看磁盘w ...
- centos7 mariaDB安装
参考:http://www.linuxidc.com/Linux/2016-03/128880.htm
- 【应用】wamp3.x.x设置,让外网能够访问本服务器
开始教程前,先来看一看本机的运行环境. WAMP 32位版 3.0.6 WIN7 x86 企业版 其他VC运行库全部安装,NET装了3.5以及4.0,还有一些运行库这里省略 ——我是华丽的分割线——— ...
- 「2018山东一轮集训」Game
%%神仙题 首先转化一波模型:可以把原问题看成,初始每个位置有0/1个石子,1操作看成从一个位置拿走一个石子,2操作看成从l[i]拿走一个石子,并在[ l[i]+1 , r[i] ]的每个位置放上一个 ...
- bzoj 1712: [Usaco2007 China]Summing Sums 加密
1712: [Usaco2007 China]Summing Sums 加密 Description 那N只可爱的奶牛刚刚学习了有关密码的许多算法,终于,她们创造出了属于奶牛的加密方法.由于她 ...