《Java编程思想》读书笔记 —— 注解。
第20章 注解
注解(也叫元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。
注解的优点:
1.可以提供用来完整地描述程序所需的信息(这些信息无法用Java表达)-> 以将由编译器来测试和验证的格式存储有关程序的额外信息。
2.可以用来生成描述符文件或是新的类的定义->减轻编写"样板"代码的负担。
3.更加干净易读的代码以及编译器类型检查。
注解的语法:除@符号的使用外,其他和Java固有语法一样
Java SE5内置了三种,定义在java.lang中的注解:
@Override 当前的方法定义将覆盖父类(超类)中的方法。
@Deprecated 被注解的元素被取代,不推荐使用。
@SuppressWarnings 关闭不当的编译器警告信息。
基本语法
1.@Target 表示该注解可以用于什么地方。
ElementType参数包括:
public enum ElementType {
//类、接口(包括注解类型)或是enum声明
TYPE,
//域声明(包括enum实例)
FIELD,
//方法声明
METHOD,
//参数声明
PARAMETER,
//构造器声明
CONSTRUCTOR,
//局部变量声明
LOCAL_VARIABLE,
//注解类型声明
ANNOTATION_TYPE,
//包声明
PACKAGE,
//类型参数声明(Java1.8开始使用)
TYPE_PARAMETER,
//类型使用(Java1.8开始使用)
TYPE_USE
}
2.@Retention 表示需要在什么级别保存该注解信息。
RetentionPolicy 参数包括:
public enum RetentionPolicy {
/**
* Annotations are to be discarded by the compiler.
*注解将被编译器丢弃
*/
SOURCE,
/**
* Annotations are to be recorded in the class file by the compiler
* but need not be retained by the VM at run time. This is the default
* behavior.
*注解被编译器保存在类文件中。但在运行的时候没有被VM保存
*/
CLASS,
/**
* Annotations are to be recorded in the class file by the compiler and
* retained by the VM at run time, so they may be read reflectively.
*
* @see java.lang.reflect.AnnotatedElement
* 注解将被编译器保存在类文件中,在运行的时候也会被VM保存。因此可通过反射机制读取注解的信息
*/
RUNTIME
}
3.@Documented 将此注解包含在 Javadoc 中。
4.@Inherited 允许子类继承父类中的注解。
定义注解的语法:
package com;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
}
使用注解的语法:
package com;
public class Testable {
public void execute(){
System.out.println("Executing...");
}
@Test void testExcute(){
execute();
}
}
参考资料
1、Java编程思想学习笔记——注解 - JohnTsai - 博客园
https://www.cnblogs.com/JohnTsai/p/4926203.html
2、《Java编程思想》学习笔记17——注解Annotation - CSDN博客
http://blog.csdn.net/z742182637/article/details/50454204
评论 (0)