注解你可以理解为一个特殊的类,或者接口其自定义个格式形如

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)的简单介绍的更多相关文章

  1. Java注解Annotation(一)

    Java注解Annotation(一)——简介 这一章首先简单介绍一下注解,下一章会给出一个注解应用的DEMO. 1. 元注解 元注解的作用是负责注解其他的注解. JDK1.5中,定义了4个标准的me ...

  2. 深入JAVA注解-Annotation(学习过程)

    JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...

  3. 深入学习JAVA注解-Annotation(学习过程)

    JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...

  4. Java注解Annotation与自定义注解详解

    Java注解简介 开发中经常使用到注解,在项目中也偶尔会见到过自定义注解,今天就来探讨一下这个注解是什么鬼,以及注解的应用场景和如何自定义注解. 下面列举开发中常见的注解 @Override:用于标识 ...

  5. Java - 注解 (Annotation)

    Java - 注解 (Annotation)   一.基本的 Annotation     > 使用 Annotation 时要在其前面增加 @符号,并把该 Annotation 当成一个修饰符 ...

  6. Java注解(Annotation)详解

    转: Java注解(Annotation)详解 幻海流心 2018.05.23 15:20 字数 1775 阅读 380评论 0喜欢 1 Java注解(Annotation)详解 1.Annotati ...

  7. 秒懂,Java 注解 (Annotation)你可以这样学 - CSDN博客

    https://blog.csdn.net/briblue/article/details/73824058 文章开头先引入一处图片. 这处图片引自老罗的博客.为了避免不必要的麻烦,首先声明我个人比较 ...

  8. java注解Annotation

    扯扯注解的蛋 为什么学习注解?学习注解有什么好处?学完能做什么? 1.能够读懂别人的代码,特别是框架相关的代码 2.让编程更加简洁,代码更加清晰 3.让别人高看你一眼 注解是java1.5引入的 概念 ...

  9. java 注解Annotation

    什么是注解?  注解,顾名思义,注解,就是对某一事物进行添加注释说明,会存放一些信息,这些信息可能对以后某个时段来说是很有用处的. java注解又叫java标注,java提供了一套机制,使得我们可以对 ...

  10. Java注解Annotation详解

    从JDK5开始,Java增加了Annotation(注解),Annotation是代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相应的处理.通过使用Annotation,开发人员可 ...

随机推荐

  1. QOS-基本拥塞管理机制(PQ CQ WFQ RTPQ)

    QOS-基本拥塞管理机制(PQ CQ WFQ RTPQ) 2018年7月7日    20:29 拥塞:是指当前供给资源相对于正常转发处理需要资源的不足,从而导致服务质量下降的一种现象 拥塞管理概述: ...

  2. LeetCode:12. Roman to Integer (Easy)

    1. 原题链接 https://leetcode.com/problems/roman-to-integer/description/ 2. 题目要求 (1)将罗马数字转换成整数:(2)范围1-399 ...

  3. Hystrix入门指南

    Introduction 1.Where does the name come from? hystrix对应的中文名字是“豪猪”,豪猪周身长满了刺,能保护自己不受天敌的伤害,代表了一种防御机制,这与 ...

  4. 【WPF】 前言

    [WPF] 前言 前段时间项目中用到了WPF,就边学边做项目,一个项目做下来有点感触,以此记录. 以前也开发过多个C/S项目, 一直都是用的Winform,Winform 做些简单的界面很方便,基本只 ...

  5. CSS流布局权威指南

    http://www.cnblogs.com/qieguo/p/5421252.html

  6. python统计日志小脚本

    日志格式如下: [ 2016-06-28T00:10:33-03:00 ] xxx.xx.xx.xxx /api/index/xxx/ ERR: code:400 message: params: c ...

  7. [电子书] 《Android编程兵书》PDF

    Android编程兵书 内容简介: 这是一本Android开发书籍,内容讲解详细,例子丰富,能帮助读者举一反三.在<Android编程兵书>中,每一个知识点的描述都非常详细,并且每一个知识 ...

  8. Selenide 简单实现自动化测试

    Selenide 网址:http://selenide.org/ github 地址:https://github.com/codeborne/selenide Selenide 早些年一直使用,中间 ...

  9. Python|花了一天,为大家整理的一套来自外国大佬的密码速查表

    简单的HTTPS服务器 检查证书信息 输出 生成自签名证书 输出 准备一个签名注册请求 输出 生成无密码的RSA秘钥文件 用一个私钥给文件签名 输出 从签名验证一个文件 输出 通过pem文件做RSA加 ...

  10. Struts2(四.注册时检查用户名是否存在及Action获取数据的三种方式)

    一.功能 1.用户注册页面 <%@ page language="java" contentType="text/html; charset=UTF-8" ...