在不了解一个内容之前,先跟着教程动起来,再深究其原理。
-
元注解:用于修饰注解的注解,通常用在注解的定义上
@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
网友评论