由于Data-Mediator中介者框架用了编译时注解技术, 所以跟注解是分不开的。
Data-Mediator的注解
-
1, @Fields注解
- 简介: @Fields表示的是一个数据模型的所有属性字段。包含一系列的@Field集合. 比如:
- 详细介绍:
public @interface Fields { //表示所有是属性字段定义。 Field[] value(); //表示是否使用链式编程。 默认true. boolean enableChain() default true; //表示缓存的最大个数。 用于数据缓存 int maxPoolCount() default 0; //是否为这个数据module生成 JsonAdapter. 详细见google/Gson boolean generateJsonAdapter() default true; }- 示例程序:(@Field的说明见下面)
@Fields(value = { @Field(propName = "name"), @Field(propName = "id", seriaName = "_id"), @Field(propName = "age", type = int.class, flags = FieldFlags.FLAGS_MAIN_SCOPES_2 | FieldFlags.FLAG_EXPOSE_DEFAULT), @Field(propName = "grade", type = int.class, since = 1.3), @Field(propName = "nickName", since = 1.2, until = 2.6) }, generateJsonAdapter = false) public interface IStudent { } -
2, @Field注解
- 简介: @Field表示的是一个属性字段。sample:
@Field(propName = "testItem_1", type = Student.class, since = 1.2, until = 2.0) //表示,属性名称 'testItem_1', 类型是Student, gson注解@since =1.2 , gson注解@until=2.0.- 详细介绍:
public @interface Field { //字段的属性名称,将会影响属性相关方法名称(比如get/set) String propName(); // 表示@SerializedName注解的名称 String seriaName() default ""; //表示这个属性字段的基本类型,默认String。 Class<?> type() default String.class; //表示 属性字段的复合类型。默认无。目前有COMPLEX_ARRAY(数组), COMPLEX_LIST(列表), COMPLEX_SPARSE_ARRAY(SparseArray) int complexType() default 0; //关于属性的标志。比如transient标志(影响Serializable序列化。) 所有的标志都可在FieldFlags类中可见到。 int flags() default FieldFlags.FLAGS_MAIN_SCOPES_3; //表示Gson , @since注解的值. 必须要 >= 1.0 double since() default 1.0; //表示Gson, @until的值. double until() default Integer.MAX_VALUE; } -
3, @GsonConfig介绍
- 简介: 表示Gson注解全局相关的配置。不懂Gson注解?请看Google-Gson注解使用详解
- 详细介绍:
public @interface GsonConfig { //表示Gson注解的版本。 主要用于GsonBuilder. double version() default 1.0; // 表示是否生成JsonAdapter(用于搭配Gson), 本框架JsonAdapter支持SparseArray属性的 boolean generateJsonAdapter() default true; //是否禁用所有的Gson相关的注解. boolean forceDisable() default false; } -
4, @GlobalConfig
- 简介: 表示Data-mediator全局的配置(一个module只能一个).
- 详细:
public @interface GlobalConfig { //全局gson配置 GsonConfig gsonConfig() default @GsonConfig(); } - 示例:
@GlobalConfig(gsonConfig = @GsonConfig( version = 1.5, //the gson version which will used by GsonBuilder. generateJsonAdapter = true //default ))
-
5, @ImplMethod
- 简介: 用于声明实现方法的来源.
- 详细:
public @interface ImplMethod { //表示实现的方法的名称, 不指定表示和被注解的方法名称相同。 String value() default ""; //实现的方法来源于哪个类。(必须是静态的方法) Class<?> from() default void.class; }- 示例:
@Fields({ @Field(propName = "testItem100", type = FlowItem.class) }) @ImplClass(TestUtil.class) public interface TestItem100 { //这里没有明确指定方法名称,所以来源的方法名称和这个相同 //没有指定from, 所以实现类的方法来源于上面@ImplClass定义的TestUtil 类. @ImplMethod void parseStudent(Student stu, int key); //...... } //here is the TestUtil.java public class TestUtil { //相比于数据模型的方法签名,只在最前面添加了一个参数。该数据模型的 public static void parseStudent(TestSelfMethod1 tsf, Student stu, int key){ //在这里去实现方法。。do something you want } } -
6, @ImplClass
- 简介: 实现方法的来源类。
- 详细:
public @interface ImplClass { //实现方法的来源类 Class<?> value(); }- 示例:
@Fields({ @Field(propName = "testItem100", type = FlowItem.class) }) //这里用@ImplClass表示实现方法的主要来源是TestUtil类 @ImplClass(TestUtil.class) public interface TestItem100 { //这里没有明确指定方法名称,所以来源的方法名称和这个相同 //没有指定from,实现类的方法来源于上面@ImplClass定义的TestUtil 类. @ImplMethod void parseStudent(Student stu, int key); //...... } //here is the TestUtil.java public class TestUtil { //相比于数据模型的方法签名,只在最前面添加了一个参数。该数据模型的 public static void parseStudent(TestSelfMethod1 tsf, Student stu, int key){ //在这里去实现方法。。do something you want } } -
7, @Keep
- 简介:
这个注解用于表示字段field,方法method 不会被插件('data-mediator-intellij-plugin')生成方法时删除。 - 示例:
假设我要给module Student 添加静态变量 STATE_OK. 那么要想不被插件影响。 则需要这样做
@keep //添加后,插件生成时,将不会删除这个字段 int STATE_OK = 1; - 简介:
-
8, 数据绑定的注解? 见下面
至此基本所有的注解都已说明完.
想要体验最新的特性 ?
请到github/data-mediator体验。 如果觉得不错,请star支持下项目哈。