java注解(Annotation)的简单介绍
注解你可以理解为一个特殊的类,或者接口其自定义个格式形如
public @interface 注解名(){
//注解的属性,特别提醒当注解的属性为value时,在对其赋值时,可以不写value,而直接写上值即可。
}
下面一个例子讲述了注解的基本应用:(这个例子中A代表一个注解类,写一个D注解的目的是说明一个注解类中可以有注解这个属性。B代表应用了注解类的类,C代表对应用了注解类的类进行反射操作的类。)
代码如下://定义一个注解D(D的作用只是为了说明A中可以有一个注解的属性)
package com.qls.theoryIntroduce2;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface D {
String[] people() default{"王昭君","西施","阴丽华"};
}
//定义一个注解类A
package com.qls.theoryIntroduce2;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**特别说明当一个类引用一个注解时,(如B类引用A注解时)A注解中没有默认值的元素必须要赋值。
*
* 从下面的定义中可以看出A注解中的内容包括:int型带有默认值。
* int型不带有默认值(在一个类中用了A注解,A必须要给caocao这个元素赋一个值)
* 数组,以及注解。
*
* @author 秦林森
*
*/
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface A {
int liubei() default 2;
int caocao();
String[] sunquan() default {"1","2","3","4"};
int[] xiaoqiao();
D daqiao() default @D;
}
//定义一个应用注解的类B
package com.qls.theoryIntroduce2;
@A(caocao=1,xiaoqiao={8,9,10})
public class B {
}
//定义一个对应用注解的类进行反射操作的类:
package com.qls.theoryIntroduce2;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* A注解的内容全部都取出来(这里需要用到反射)
* @author 秦林森
*
*/
public class C {
public static void main(String[] args) {
// TODO Auto-generated method stub
//首选判断B类中是否有A注解:
System.out.println(B.class.isAnnotationPresent(A.class));
/**
* 返回结果为true,说明有,但是在A注解中必须有一个元注解
* @Retention(RetentionPolicy.RUNTIME)否则,返回结果为false.
*/
//取出A注解中的值:
A annot = B.class.getAnnotation(A.class);
//取出caocao的值
int caocao = annot.caocao();
System.out.println("caocao="+caocao);
//取出daqiao的值
System.out.println("daqiao的值是:");//newline
for(String str:annot.daqiao().people()){
System.out.print(str+" ");
}
System.out.println();
//取出liubei
int liubei = annot.liubei();
System.out.println("liubei="+liubei);
//取出xiaoqiao的值
System.out.println("xiaoqiao的值是:");
for(int xiaoqiao:annot.xiaoqiao()){
System.out.print(xiaoqiao+" ");
}
//取出孙权的值是:
System.out.println();
System.out.println("sunquan的值是:");
for(String sunquan:annot.sunquan()){
System.out.print(sunquan+" ");
}
}
}/*Output:
true
caocao=1
daqiao的值是:
王昭君 西施 阴丽华
liubei=2
xiaoqiao的值是:
8 9 10
sunquan的值是:
1 2 3 4 *///:~
java注解(Annotation)的简单介绍的更多相关文章
- Java注解Annotation(一)
Java注解Annotation(一)——简介 这一章首先简单介绍一下注解,下一章会给出一个注解应用的DEMO. 1. 元注解 元注解的作用是负责注解其他的注解. JDK1.5中,定义了4个标准的me ...
- 深入JAVA注解-Annotation(学习过程)
JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...
- 深入学习JAVA注解-Annotation(学习过程)
JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...
- Java注解Annotation与自定义注解详解
Java注解简介 开发中经常使用到注解,在项目中也偶尔会见到过自定义注解,今天就来探讨一下这个注解是什么鬼,以及注解的应用场景和如何自定义注解. 下面列举开发中常见的注解 @Override:用于标识 ...
- Java - 注解 (Annotation)
Java - 注解 (Annotation) 一.基本的 Annotation > 使用 Annotation 时要在其前面增加 @符号,并把该 Annotation 当成一个修饰符 ...
- Java注解(Annotation)详解
转: Java注解(Annotation)详解 幻海流心 2018.05.23 15:20 字数 1775 阅读 380评论 0喜欢 1 Java注解(Annotation)详解 1.Annotati ...
- 秒懂,Java 注解 (Annotation)你可以这样学 - CSDN博客
https://blog.csdn.net/briblue/article/details/73824058 文章开头先引入一处图片. 这处图片引自老罗的博客.为了避免不必要的麻烦,首先声明我个人比较 ...
- java注解Annotation
扯扯注解的蛋 为什么学习注解?学习注解有什么好处?学完能做什么? 1.能够读懂别人的代码,特别是框架相关的代码 2.让编程更加简洁,代码更加清晰 3.让别人高看你一眼 注解是java1.5引入的 概念 ...
- java 注解Annotation
什么是注解? 注解,顾名思义,注解,就是对某一事物进行添加注释说明,会存放一些信息,这些信息可能对以后某个时段来说是很有用处的. java注解又叫java标注,java提供了一套机制,使得我们可以对 ...
- Java注解Annotation详解
从JDK5开始,Java增加了Annotation(注解),Annotation是代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相应的处理.通过使用Annotation,开发人员可 ...
随机推荐
- 素数环 南阳acm488(回溯法)
素数环 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环. 为了简 ...
- Horner规则求多项式
/* Horner */ /*多项式:A(x)=a[n]X^n+a[n-1]x^n-1+...+a[1]X^1+a[0]X^0*/ #include <stdio.h> long int ...
- tail命令使用
1.tail命令 命令的主要用途是将指定的文件的最后部分输出到终端,如果该文件有更新,tail会自己主动刷新. 2.tail语法 tail [ -f ] [ -c Number | -n Number ...
- Python3 函数参数
# # 常规参数 # def jiafa(a,b): # print(a+b) # # jiafa(5,6) # # # def xinxi(name,location,sex='male'): # ...
- P1346 电车(dijkstra)
P1346 电车 题目描述 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能).在每个路口 ...
- 获得通讯录并拨打电话 Android
由于通讯录在手机里是以数据库贮存的 所以我们可以通过getContentResolver来获得通讯录 ,这个方法返回一个游标的数据类型,通过moveToNext()方法来获取所有的手机号码信息, 当然 ...
- 问题 A: a+b
问题 A: a+b 时间限制: 1 Sec 内存限制: 32 MB提交: 285 解决: 124[提交][状态][讨论版][命题人:外部导入] 题目描述 实现一个加法器,使其能够输出a+b的值. ...
- wangEditor编辑器中解析html图文信息问题
在JS中,有一种方法:innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML. 也就是说,我们可以利用这个属性,把字符串转换为html代码,这样就可以被解析了. 其次,我们是需要在页 ...
- BFS实现模板
以如下图的无向图G4为例,进行图的深度优先搜索: 假设从顶点v1出发进行搜索,首先访问v1和v1的邻接点v2和v3,然后依次访问v2的邻接点v4和v5及v3的邻接点v6和v7,最后访问v4的邻接点v8 ...
- Z.XML第一次迭代分数分配
紧张的第一次迭代落下帷幕,便到了分数分配这样令人揪心又无奈的日子.如何进行分数分配,以使大家都能满意,这一直是个难以非常好地处理的问题.幸运地是,我们团队的所有成员每个人都对本次迭代乃至整个项目过程付 ...