了解注解@Annotation

在不了解一个内容之前,先跟着教程动起来,再深究其原理。

  • 元注解:用于修饰注解的注解,通常用在注解的定义上
    @Target:注解的作用目标
    @Retention:注解的生命周期
    @Documented:注解是否应当被包含在 JavaDoc 文档中
    @Inherited:是否允许子类继承该注解
    *还有一些未列出

  • 常用的预置注解
    @Deprecated
    @Override
    @SuppressWarnings

  • 注解的属性:也叫注解的成员变量,以无参方法的形式来声明,方法名定义了成员变量的名字,返回值定义了变量类型。注解只有成员变量没有方法。

定义

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

使用(多个参数使用","隔开,单个成员变量时可以省略参数名,没有成员变量的时候可以省略括号)

@Person(name="Jonathon")
public class Test {
}

增加默认值(有默认值的情况下使用时可以不对参数进行赋值)

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Person {
    String name() default "NoName";
}

可以通过反射拿到注解对象并且调用属性方法,前提是@Retention(RetentionPolicy.RUNTIME)

  • 注解具体能干啥
    提供信息给编译器: 编译器可以利用注解来探测错误和警告信息
    编译阶段时的处理: 软件工具可以用来利用注解信息来生成代码、Html文档或者做其它相应处理。
    运行时的处理: 某些注解可以在程序运行的时候接受代码的提取
    来自秒懂,Java 注解 (Annotation)你可以这样学
    也就是说除了注解,如果配合额外的逻辑代码能够完成更多编译前的特殊的工作。
    就如Android开发中常用的Dagger2、ButterKnife

你可能感兴趣的:(了解注解@Annotation)