Java注解

概念

Java注解用于为Java代码提供元数据。
作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。
Java注解是从Java5开始添加到Java的。

使用

一、创建一个注解

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface PageName {
    String value();
}

二、元注解

  1. @Retention 注解的有效期
public enum RetentionPolicy {
    /**
     * 注释将被编译器丢弃,只在源码阶段保留
     * 如: @Override
     */
    SOURCE,
    /**
     * 注解只被保留到编译进行的时候,它并不会被加载到 JVM中
     * 如:@Deprecated
     */
    CLASS,

    /**
     * 注释应由编译器记录在类文件中
     * 在运行时由VM保留,因此可以进行反射性的读取。
      *如:@PageName
     */
    RUNTIME
}
  1. @Target 注解运用的地方
public enum ElementType {
    /** 类、接口(包括注释类型)或枚举声明 */
    TYPE,

    /** 成员变量(包括枚举常量) */
    FIELD,

    /**方法声明 */
    METHOD,

    /** 正式的参数声明 */
    PARAMETER,

    /** 构造函数声明 */
    CONSTRUCTOR,

    /** 局部变量声明 */
    LOCAL_VARIABLE,

    /** 注释类型声明 */
    ANNOTATION_TYPE,

    /** 包声明 */
    PACKAGE,

    /**
     * 类型参数声明
     *
     * @since 1.8
     * @hide 1.8
     */
    TYPE_PARAMETER,

    /**
     * 使用的类型
     *
     * @since 1.8
     * @hide 1.8
     */
    TYPE_USE
}
  1. @Documented
      能够将注解中的元素包含到 Javadoc 中去

  2. @Inherited
      Inherited 是继承的意思,但是它并不是说注解本身可以继承,而是说如果一个超类被 @Inherited 注解过的注解进行注解的话,那么如果它的子类没有被任何注解应用的话,那么这个子类就继承了超类的注解。

  3. @Repeatable
      Repeatable 可重复的意思。@Repeatable 是 Java 1.8 才加进来的,所以算是一个新的特性

三、属性

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface PageName {
    String value() default "";
}
@PageName(value = "菜品分类管理")
public class FoodCategoryActivity extends BaseLoadActivity implements View.OnClickListener {
    public static final int FOOD_CATEGORY_NORMAL = 0;
    public static final int FOOD_CATEGORY_ONLINE = 1;
    private TabLayout mTitle;
    private boolean mIsFirst = true;

你可能感兴趣的:(Java注解)