This commit is contained in:
12
convert.html
12
convert.html
@@ -197,8 +197,8 @@
|
||||
</pre></div>
|
||||
<br/>
|
||||
|
||||
<p> Convert 支持非空构造函数。</p>
|
||||
<p> 1. <b>public</b> 的非空构造函数加上 @java.beans.ConstructorProperties 注解:</p>
|
||||
<p> Convert 支持带参数构造函数。</p>
|
||||
<p> 1. <b>public</b> 带参数的构造函数加上 @java.beans.ConstructorProperties 注解:</p>
|
||||
<div class="highlight"><pre><span class="kd">public</span> <span class="kd">class</span> <span class="nc">UserRecord</span> <span class="o">{</span>
|
||||
|
||||
<span class="kd">private</span> <span class="kt">int</span> <span class="n">userid</span><span class="o">;</span>
|
||||
@@ -226,7 +226,7 @@
|
||||
<span class="k">return</span> <span class="n">password</span><span class="o">;</span>
|
||||
<span class="o">}</span>
|
||||
<span class="o">}</span></pre></div>
|
||||
<p> 2. 非<b>public</b> 的非空构造函数类自定义Creator:</p>
|
||||
<p> 2. 自定义Creator:</p>
|
||||
<div class="highlight"><pre><span class="kd">public</span> <span class="kd">class</span> <span class="nc">UserRecord</span> <span class="o">{</span>
|
||||
|
||||
<span class="kd">private</span> <span class="kt">int</span> <span class="n">userid</span><span class="o">;</span>
|
||||
@@ -254,7 +254,7 @@
|
||||
<span class="o">}</span>
|
||||
|
||||
<span class="cm">/**</span>
|
||||
<span class="cm"> * 无法提供public的构造函数可以自定义Creator方法。</span>
|
||||
<span class="cm"> * 自定义Creator方法。</span>
|
||||
<span class="cm"> * 1) 方法名可以随意。</span>
|
||||
<span class="cm"> * 2) 方法必须是static。</span>
|
||||
<span class="cm"> * 3)方法的参数必须为空。</span>
|
||||
@@ -265,7 +265,7 @@
|
||||
<span class="kd">private</span> <span class="kd">static</span> <span class="n">Creator</span><span class="o"><</span><span class="n">UserRecord</span><span class="o">></span> <span class="nf">creator</span><span class="o">()</span> <span class="o">{</span>
|
||||
<span class="k">return</span> <span class="k">new</span> <span class="n">Creator</span><span class="o"><</span><span class="n">UserRecord</span><span class="o">>()</span> <span class="o">{</span>
|
||||
<span class="nd">@Override</span>
|
||||
<span class="nd">@Creator.ConstructorParameters</span><span class="o">({</span><span class="s">"userid"</span><span class="o">,</span> <span class="s">"username"</span><span class="o">,</span> <span class="s">"password"</span><span class="o">})</span> <span class="c1">//非空构造函数必须有ConstructorParameters注解</span>
|
||||
<span class="nd">@Creator.ConstructorParameters</span><span class="o">({</span><span class="s">"userid"</span><span class="o">,</span> <span class="s">"username"</span><span class="o">,</span> <span class="s">"password"</span><span class="o">})</span> <span class="c1">//带参数的构造函数必须有ConstructorParameters注解</span>
|
||||
<span class="kd">public</span> <span class="n">UserRecord</span> <span class="nf">create</span><span class="o">(</span><span class="n">Object</span><span class="o">...</span> <span class="n">params</span><span class="o">)</span> <span class="o">{</span>
|
||||
<span class="k">return</span> <span class="k">new</span> <span class="nf">UserRecord</span><span class="o">((</span><span class="n">params</span><span class="o">[</span><span class="mi">0</span><span class="o">]</span> <span class="o">==</span> <span class="kc">null</span> <span class="o">?</span> <span class="mi">0</span> <span class="o">:</span> <span class="o">(</span><span class="n">Integer</span><span class="o">)</span> <span class="n">params</span><span class="o">[</span><span class="mi">0</span><span class="o">]),</span> <span class="o">(</span><span class="n">String</span><span class="o">)</span> <span class="n">params</span><span class="o">[</span><span class="mi">1</span><span class="o">],</span> <span class="o">(</span><span class="n">String</span><span class="o">)</span> <span class="n">params</span><span class="o">[</span><span class="mi">2</span><span class="o">]);</span>
|
||||
<span class="o">}</span>
|
||||
@@ -273,6 +273,7 @@
|
||||
<span class="o">}</span>
|
||||
<span class="o">}</span>
|
||||
</pre></div>
|
||||
<p> 通常JavaBean类默认有个public空参数的构造函数,因此大部分情况下不要自定义Creator,其实只要不是private的空参数构造函数Convert都能自动支持(其他的框架都仅支持public的构造函数),只有仅含private的构造函数才需要自定义Creator。带参数的构造函数就需要标记@java.beans.ConstructorProperties,当然若使用Java 8的新特性,带上 -parameters 编译项进行编译的类连@ConstructorProperties都可以省掉,Convert会自动匹配参数名动态生成Creator。</p>
|
||||
<br/>
|
||||
|
||||
<p> Convert 支持自定义Decode、Encode。</p>
|
||||
@@ -389,6 +390,7 @@
|
||||
|
||||
<span class="o">}</span>
|
||||
</pre></div>
|
||||
<p> 由上可以看出,Convert的自定义配置完全符合面向对象思想,提倡在JavaBean内部去自定义非常规的构造函数或Decode、Encode方法,通过Factory显式配置的方式通常用于非自己定义的数据类(如 java.io.File)。</p>
|
||||
<br/>
|
||||
|
||||
<h3><a id="convert_bson_struct" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>BSON的协议格式</h3>
|
||||
|
||||
Reference in New Issue
Block a user