按生命周期分类可以分为以下三类:
1、RetentionPolicy.SOURCE :注释仅保留在源文件(.java文件)中
2、RetentionPolicy.CLASS :注释保留在class文件中,但在jvm加载class文件时会被丢弃,默认值(.class文件)
3、RetentionPolicy.RUNTIME :注释保存在class文件中,在jvm加载class文件后仍然存在(内存中的字节码) )。
生命周期长度SOURCE CLASS RUNTIME
必须在运行时动态获取注释信息并在RUNTIME中进行注释
编译时,需要生成ButterKnife等辅助代码,并在CLASS中进行注释等预处理操作。
@Override和@SuppressWarnings等,如果只是进行检查性操作的话,就使用SOURCE注释。