概念
Java注解用于为Java代码提供元数据。
作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。
Java注解是从Java5开始添加到Java的。
使用
一、创建一个注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface PageName {
String value();
}
二、元注解
- @Retention 注解的有效期
public enum RetentionPolicy {
/**
* 注释将被编译器丢弃,只在源码阶段保留
* 如: @Override
*/
SOURCE,
/**
* 注解只被保留到编译进行的时候,它并不会被加载到 JVM中
* 如:@Deprecated
*/
CLASS,
/**
* 注释应由编译器记录在类文件中
* 在运行时由VM保留,因此可以进行反射性的读取。
*如:@PageName
*/
RUNTIME
}
- @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
}
@Documented
能够将注解中的元素包含到 Javadoc 中去@Inherited
Inherited 是继承的意思,但是它并不是说注解本身可以继承,而是说如果一个超类被 @Inherited 注解过的注解进行注解的话,那么如果它的子类没有被任何注解应用的话,那么这个子类就继承了超类的注解。@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;