将对象里所有的空值属性设置成null

news/2024/5/19 3:41:08 标签: java, object, 反射, class
class="baidu_pl">
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">}

http://www.niftyadmin.cn/n/1636082.html

相关文章

Unix系统引导过程(简单步骤)

1.从MBR中读取引导加载程序(boot loader) 2.初始化内核 3.硬件检测 4.创建内核进程 5.系统管理员干预(仅仅在进入单用户模式或者恢复模式的时候) 6.执行系统启动脚本转载于:https://www.cnblogs.com/haoxiaoyu/p/3932069.html

Json报文请求测试类

Json格式请求测试工具类package com.ifc.test.claimthirdcommon;import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader;import org.apache.commons.httpclient.HttpClient; …

[WCF编程]3.WCF基础

一、服务 服务是一组公开功能的集合。 服务内部包含了如语言、技术、版本与框架等概念,服务之间的交互只允许使用规定的通信模式 外界客户端并不知道服务内部的实现细节,所以WCF服务通常通过元数据的方式描述可用的功能及服务可能采用的通信方式 WCF不允…

Mycat实现读写分离、分库分表

转载于https://www.cnblogs.com/chongaizhen/p/11083226.html Mycat实现读写分离、分库分表 系统开发中,数据库是非常重要的一个点。除了程序的本身的优化,如:SQL语句优化、代码优化,数据库的处理本身优化也是非常重要的。主从、热…

灌浆料的弹性模量计算_桥梁支座灌浆料怎么样 盘点支座灌浆料厂家选择

桥梁支座灌浆料我们很多人都接触过,但是,对于初次接触到桥梁支座灌浆料的人来说都有这样的疑问,怎么区分桥梁支座灌浆料质量好坏?如何选择支座灌浆料厂家?下面我们就来主要介绍一下!支座灌浆料主要是用于高…

中间件介绍

本来今天就该讲 MyCat 了,但是我发现还有一个概念值得和大家聊一下,那就是 Java 中间件! 因为 MyCat 是一个分布式数据库中间件,要理解 MyCat ,那你就得先知道到底什么是中间件! 中间件简介 说起中间件&…

《C和指针》读书笔记 第5章-操作符和表达式

原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3936503.html 转载于:https://www.cnblogs.com/DayByDay/p/3936503.html

解决win10的ie11环境下,onblur或者onfocusout之后的alert弹出时,其他窗口会隐藏当前窗口的问题

工作中客户反应把系统换到win10的情况下,onblur时弹出窗口会使当前运行环境中的其他窗口弹到活动的窗口之前 上网查了资料,这个是目前微软已知的bug,并在官网显示这个问题由于不影响安全性,没有修复的预定 参考url:B…