diff --git a/convert.html b/convert.html index 2cac4eddf..da2e66471 100644 --- a/convert.html +++ b/convert.html @@ -197,8 +197,8 @@
-

        Convert 支持非空构造函数。

-

         1. public 的非空构造函数加上 @java.beans.ConstructorProperties 注解:

+

        Convert 支持带参数构造函数。

+

         1. public 带参数的构造函数加上 @java.beans.ConstructorProperties 注解:

public class UserRecord {
 
     private int userid;
@@ -226,7 +226,7 @@
         return password;
     }
 }
-

         2. 非public 的非空构造函数类自定义Creator:

+

         2. 自定义Creator:

public class UserRecord {
 
     private int userid;
@@ -254,7 +254,7 @@
     }
 
     /**
-     * 无法提供public的构造函数可以自定义Creator方法。
+     * 自定义Creator方法。
      * 1) 方法名可以随意。
      * 2) 方法必须是static。
      * 3)方法的参数必须为空。
@@ -265,7 +265,7 @@
     private static Creator<UserRecord> creator() {
         return new Creator<UserRecord>() {
             @Override
-            @Creator.ConstructorParameters({"userid", "username", "password"}) //非空构造函数必须有ConstructorParameters注解
+            @Creator.ConstructorParameters({"userid", "username", "password"}) //带参数的构造函数必须有ConstructorParameters注解
             public UserRecord create(Object... params) {
                 return new UserRecord((params[0] == null ? 0 : (Integer) params[0]), (String) params[1], (String) params[2]);
             }
@@ -273,6 +273,7 @@
     }
 }
                 
+

        通常JavaBean类默认有个public空参数的构造函数,因此大部分情况下不要自定义Creator,其实只要不是private的空参数构造函数Convert都能自动支持(其他的框架都仅支持public的构造函数),只有仅含private的构造函数才需要自定义Creator。带参数的构造函数就需要标记@java.beans.ConstructorProperties,当然若使用Java 8的新特性,带上 -parameters 编译项进行编译的类连@ConstructorProperties都可以省掉,Convert会自动匹配参数名动态生成Creator。


        Convert 支持自定义Decode、Encode。

@@ -389,6 +390,7 @@ } +

        由上可以看出,Convert的自定义配置完全符合面向对象思想,提倡在JavaBean内部去自定义非常规的构造函数或Decode、Encode方法,通过Factory显式配置的方式通常用于非自己定义的数据类(如 java.io.File)。


BSON的协议格式