class="article_content clearfix">
class="markdown_views prism-atom-one-light">
将一个对象里所有的空值属性设置成null
import class="tags" href="/tags/JAVA.html" title=java>java.lang.reflect.Field;
class="prism language-class="tags" href="/tags/JAVA.html" title=java>java"> class="token comment">/**
* 将一个对象里所有的空值属性设置成null
* @param o
* @return
*/
class="token keyword">public Object class="token function">changeToNullclass="token punctuation">(Object oclass="token punctuation">) class="token punctuation">{
Class class="token class-name">c class="token operator">= oclass="token punctuation">.class="token function">getClassclass="token punctuation">(class="token punctuation">)class="token punctuation">;
Class class="token class-name">sc class="token operator">= cclass="token punctuation">.class="token function">getSuperclassclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token keyword">if class="token punctuation">(null class="token operator">!= scclass="token punctuation">) class="token punctuation">{
class="token function">recursionNullclass="token punctuation">(scclass="token punctuation">, oclass="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token keyword">try class="token punctuation">{
Fieldclass="token punctuation">[class="token punctuation">] fs class="token operator">= cclass="token punctuation">.class="token function">getDeclaredFieldsclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token keyword">for class="token punctuation">(Field f class="token operator">: fsclass="token punctuation">) class="token punctuation">{
fclass="token punctuation">.class="token function">setAccessibleclass="token punctuation">(class="token boolean">trueclass="token punctuation">)class="token punctuation">;
String st class="token operator">= fclass="token punctuation">.class="token function">getclass="token punctuation">(oclass="token punctuation">) class="token operator">+ class="token string">""class="token punctuation">;
String str class="token operator">= stclass="token punctuation">.class="token function">replaceAllclass="token punctuation">(class="token string">" "class="token punctuation">, class="token string">""class="token punctuation">)class="token punctuation">;
class="token keyword">if class="token punctuation">(strclass="token punctuation">.class="token function">equalsclass="token punctuation">(class="token string">""class="token punctuation">) class="token operator">|| str class="token operator">== null class="token operator">|| strclass="token punctuation">.class="token function">equalsclass="token punctuation">(class="token string">"null"class="token punctuation">)class="token punctuation">) class="token punctuation">{
fclass="token punctuation">.class="token function">setclass="token punctuation">(oclass="token punctuation">, nullclass="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token punctuation">}
class="token punctuation">} class="token keyword">catch class="token punctuation">(class="token class-name">SecurityException eclass="token punctuation">) class="token punctuation">{
eclass="token punctuation">.class="token function">printStackTraceclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token punctuation">} class="token keyword">catch class="token punctuation">(class="token class-name">Exception eclass="token punctuation">) class="token punctuation">{
eclass="token punctuation">.class="token function">printStackTraceclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token keyword">return oclass="token punctuation">;
class="token punctuation">}
class="token comment">/**
* 判断是否有超类,若有则继续将超类的空值置空
* @param sc
* @param o
* @return
*/
class="token keyword">public Object class="token function">recursionNullclass="token punctuation">(Class class="token class-name">scclass="token punctuation">,Object oclass="token punctuation">) class="token punctuation">{
Class class="token class-name">c class="token operator">=scclass="token punctuation">.class="token function">getSuperclassclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token keyword">if class="token punctuation">(null class="token operator">!= cclass="token punctuation">) class="token punctuation">{
class="token function">recursionNullclass="token punctuation">(cclass="token punctuation">,oclass="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token keyword">try class="token punctuation">{
Fieldclass="token punctuation">[class="token punctuation">] fs class="token operator">= scclass="token punctuation">.class="token function">getDeclaredFieldsclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token keyword">for class="token punctuation">(Field f class="token operator">: fsclass="token punctuation">) class="token punctuation">{
fclass="token punctuation">.class="token function">setAccessibleclass="token punctuation">(class="token boolean">trueclass="token punctuation">)class="token punctuation">;
String st class="token operator">= fclass="token punctuation">.class="token function">getclass="token punctuation">(oclass="token punctuation">) class="token operator">+ class="token string">""class="token punctuation">;
String str class="token operator">= stclass="token punctuation">.class="token function">replaceAllclass="token punctuation">(class="token string">" "class="token punctuation">, class="token string">""class="token punctuation">)class="token punctuation">;
class="token keyword">if class="token punctuation">(strclass="token punctuation">.class="token function">equalsclass="token punctuation">(class="token string">""class="token punctuation">) class="token operator">|| str class="token operator">== null class="token operator">|| strclass="token punctuation">.class="token function">equalsclass="token punctuation">(class="token string">"null"class="token punctuation">)class="token punctuation">) class="token punctuation">{
fclass="token punctuation">.class="token function">setclass="token punctuation">(oclass="token punctuation">, nullclass="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token punctuation">}
class="token punctuation">} class="token keyword">catch class="token punctuation">(class="token class-name">SecurityException eclass="token punctuation">) class="token punctuation">{
eclass="token punctuation">.class="token function">printStackTraceclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token punctuation">} class="token keyword">catch class="token punctuation">(class="token class-name">Exception eclass="token punctuation">) class="token punctuation">{
eclass="token punctuation">.class="token function">printStackTraceclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token keyword">return oclass="token punctuation">;
class="token punctuation">}