《Java编程思想》读书笔记(九)

wshunli
2017-12-05 / 0 评论 / 54 阅读 / 正在检测是否收录...

《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

1

评论 (0)

取消