SOURCE(源码时),CLASS(编译时),RUNTIME(运行时)
默认为 CLASS,SOURCE 大都为 Mark Annotation,这类 Annotation 大都用来校验,比如 Override, SuppressWarnings
- @Target 可以用来修饰哪些程序元素,如 TYPE, METHOD, CONSTRUCTOR, FIELD, PARAMETER 等,未标注则表示可修饰所有
ANONOTATION_TYPE(注解类型声明),
PACKAGE(包)
TYPE (类,包括enum及接口,注解类型)
METHOD (方法)
CONSTRUCTOR (构造方法)
FIFLD (成员变量)
PARAMATER (参数)
LOCAL_VARIABLE (局部 变量)
- @Inherited 是否可以被继承,默认为 false
这里我们以 AndroidStudio 为例子讲解。假设我们要把 User 这样的一个类,在编译时转化成类似于 json 这样键值对的形式。大概需要三步。
public class Person {
@Seriable()
String name;
@Seriable()
String area;
@Seriable()
int age;
int weight;
@Seriable()
List