1.什么是注解

  1. 注解的语法: @注解名称;
  2. 注解的作用: 用来替代 xml 配置文件; 在 Servlet 3.0 中就可以使用注解来代替配置文件;
  3. 注解是由框架来读取使用的;
  4. 所有的注解都是 Annotation 的子类;
  5. 简单说, 注解是给程序(框架)看到, 而注释是给人看的.

2. 注解的使用

  • 定义注解类: 框架的工作; 语法: public @interface MyAnnotation{....}.
  • 使用注解: 程序员的工作;
  • 读取注解(反射): 框架的工作;

3. 注解的属性

3.1 定义属性
  • 格式: 类型 属性名();
// 定义属性
@interface MyAnno2 {
int age(); // 定义属性 age
String name(); // 定义属性 name
String value() default "hello world!"; // value 是带有默认值的属性
}
3.2 使用注解时,给属性赋值
    @MyAnno2(age=100, name="zhangsan")
public class Demo{
......
}
3.3 属性名为 value 的特权
  • 当使用注解时, 如果只给名为 value 的属性赋值时,可以省略 "value="

    例如: @MyAnno(value="hello") 可以书写成 @MyAnno("hello")
3.4 注解属性的类型
  • 八种基本数据类型
  • String 类型
  • Enum 类型
  • Class 类型
  • 注解类型
  • 以上类型的一维数组类型
  • Integer 类型不可以
    @MyAnno2(
// 为注解属性赋值
a=100,
b="hello",
c=MyEnum1.A,
d=String.class,
e=@MyAnno3(aa=200,bb="world"),
f={"",""} // 如果数组中的元素个数为1时, 可以省略大括号
)
public class Demo{ } // 定义注解
@interface MyAnno2 {
int a();
String b();
MyEnum1 c(); // Enum 类型
Class d();
MyAnno3 e();
String[] f(); // 数组类型
} @interface MyAnno3 {
int aa();
String bb;
}

4. 注解的作用目标限定以及保留策略限定

4.1 注解的作用目标限定
  • 使用方式: 在定义注解时,给注解添加 @Target 注解;
    @Target(value={ElementType.Type, ElementType.METHOD, ElementType.FIELD})
@interface MyAnno2{ } // ElementType 是枚举类型
// 可选值: TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE,
// ANNOTATION, PACKAGE
4.2 保留策略
  • 源代码文件(SOURCE): 注解只能在源代码中存在,当编译时,就被忽略了;
  • 字节码文件(CLASS): 注解在源代码中存在,然后编译时,会把注解信息放到 class 文件,但 JVM 在加载类时,会忽略注解;
  • JVM (RUNTIME): 注解在源代码,字节码文件中存在,并且在 JVM 加载类时,会把注解加载到 JVM 内存中(它是唯一可反射注解!!)
    // 限定注解的保留策略, Retention 为枚举类型
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnno2 {....}

参考资料:

Java 注解入门的更多相关文章

  1. Java注解入门

    注解的分类   按运行机制分:   源码注解:只在源码中存在,编译后不存在 编译时注解:源码和编译后的class文件都存在(如@Override,@Deprecated,@SuppressWarnin ...

  2. Java 注解 入门

    这几天在学习Spring3.x,发觉现在许多框架都用上了java注解功能,然后自己就对java注解这方面初步学习了一下. 首先,注解跟注释不是一个意思,也根本不是同一个事物. 注释就是我们平常平常中对 ...

  3. java注解入门(含源码下载)

    注解(Annotation)是从jdk1.5开始增加的特性.学习注解能够读懂框架的代码:让编程更加简洁,代码更加清晰. 注解概念:java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法. ...

  4. Java 注解入门实例 && 注解传參

    參考 概念:java提供了一种原程序中的元素关联不论什么信息和不论什么元数据的途径和方法 JDK内置系统注解: @Override 用于修饰此方法覆盖了父类的方法; @Deprecated 用于修饰已 ...

  5. [2]注解(Annotation)-- 深入理解Java:注解(Annotation)自定义注解入门

    转载 http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html 深入理解Java:注解(Annotation)自定义注解入门 要深入学习 ...

  6. 深入理解Java:注解(Annotation)自己定义注解入门

    深入理解Java:注解(Annotation)自己定义注解入门 要深入学习注解.我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前.我们就必须要了解Java为我们提供的元注解和相关定义注解的 ...

  7. Spring框架入门之基于Java注解配置bean

    Spring框架入门之基于Java注解配置bean 一.Spring bean配置常用的注解 常用的有四个注解 Controller: 用于控制器的注解 Service : 用于service的注解 ...

  8. JAVA - Annotation 注解 入门

    Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许 ...

  9. java注解基础入门

    前言 这篇博客主要是对java注解相关的知识进行入门级的讲解,包括**,核心内容主要体现在对java注解的理解以及如何使用.希望通过写这篇博客的过程中让自己对java注解有更深入的理解,在工作中可以巧 ...

随机推荐

  1. (转)C的代码是如何变成程序的

    原文链接:http://blog.csdn.net/fz_ywj/article/details/8769825 C语言是一门典型的编译语言,源代码文件需要编译成目标代码文件才能运行.可以认为程序文件 ...

  2. SAXReader解析xml文件demo

    1. 加入jar包 2. 代码解析 package practice; import java.io.File; import java.util.List; import org.dom4j.Doc ...

  3. svn上检出的项目在myeclipse中报错的解决

    项目本身应该是没问题的,应该是验证方面导致的错误的报错,取消验证即可:右键项目,如下操作: 除此之外,还应考虑是否环境问题引起的报错,比如:项目jar包是否发布,jdk的版本,tomcat的版本,等等

  4. python 利用numpy进行数据分析

    一.numpy.loadtxt读取数据 data=numpy.loadtxt('数据路径.txt',delimiter=',',usecols=(0,1,2,3) , dtype=float)#读取后 ...

  5. TortoiseSVN客户端使用方法

    SVN对于程序开发来说是非常重要的东西,它是非常不错的版本管理工具,下面介绍一下TortoiseSVN客户端的使用方法. 工具/原料 TortoiseSVN 方法/步骤   如果没有TortoiseS ...

  6. Atitit.收银系统pos 以及打印功能的行业标准

    Atitit.收银系统pos 以及打印功能的行业标准 1. ESC指令序列 Escape指令序列不同于ESC/POS指令 1 2. 打印标准OPOS POSPrinter 与 CashDrawer 驱 ...

  7. C++语言基础(11)-多态

    一.产生背景 先看下面的例子: #include <iostream> using namespace std; //基类People class People{ public: Peop ...

  8. gcc -M -MM -MQ -MF -MT -MD

    静态模式规则对一个较大工程的管理非常有用.它可以对整个工程的同一类文件的重建规则进行一次定义,而实现对整个工程中此类文件指定相同的重建规则.比如,可以用来描述整个工程中所有的.o 文件的依赖规则和编译 ...

  9. centos6.5下redis的安装与配置

    参照官网描述(https://redis.io/download),linux下redis安装步骤如下: $ wget http://download.redis.io/releases/redis- ...

  10. linux内核常用函数或宏

    1. simple_strtoul 用于将字符串转换为无符号长整数,第3个参数10意味着转换方式是10进制. ival = simple_strtoul(buffer, NULL, 10); 2. 大 ...