文档章节

java中使用反射获取pojo(实体)类的所有字段值

白志华
 白志华
发布于 2015/10/18 10:56
字数 614
阅读 9
收藏 0

       说起反射,不得不说它实在是太强大了,通过反射就可以轻轻松松拿到各种东东,如果你想在项目中解除对某个类的依赖,可以考虑用反射。


       今天跟大家分享的是通过java中的反射,获取pojo类的所有字段值。


       为什么要做这个操作的呢?主要是为了重写实体类的toString方法。有人会说,直接重写toString方法,返回字段.toString()的字符串不就行了。这么做的确可以,但是如果你的pojo类有上百个,上千个,你还要一个一个改吗?所以我们需要从新的方向去解决。


       因为我们所有的pojo类,都继承一个IdEntity的pojo类。它只有一个id属性,所以如果我在IdEntity中重写了toString方法,那么其他所有继承与IdEntity的pojo类都不用再写了,而且也保证了格式的统一。这里要反射出pojo类的所有字段值,如果字段是其他pojo类的对象时,也要拿过来把所有属性都列出来。

package entity.qx;

import java.lang.reflect.Field;

/**
 * @author : 崔成龙
 * @group : tgb8
 * @Date : 2014-4-9 下午8:37:22
 * @Comments : 用于重写实体类的toString方法
 * @Version : 1.0.0
 */
public class EntityToString
{

	/**
	 * @MethodName : getString
	 * @Description : 获取类中所有属性及属性值
	 * @param o
	 *            操作对象
	 * @param c
	 *            操作类,用于获取类中的方法
	 * @return
	 */
	public static String getString(Object o, Class< ? > c )
	{
		String result = c.getSimpleName( ) + ":";

		// 获取父类,判断是否为实体类
		if ( c.getSuperclass( ).getName( ).indexOf( "entity" ) >= 0 )
		{
			result +="\n<" +getString( o , c.getSuperclass( ) )+">,\n";
		}

		// 获取类中的所有定义字段
		Field[ ] fields = c.getDeclaredFields( );

		// 循环遍历字段,获取字段对应的属性值
		for ( Field field : fields )
		{
			// 如果不为空,设置可见性,然后返回
			field.setAccessible( true );

			try
			{
				// 设置字段可见,即可用get方法获取属性值。
				result += field.getName( ) + "=" + field.get( o ) +",\n";
			}
			catch ( Exception e )
			{
				// System.out.println("error--------"+methodName+".Reason is:"+e.getMessage());
			}
		}
		if(result.indexOf( "," )>=0) result = result.substring( 0 , result.length( )-2 );
		return result;
	}
}

       然后在IdEntity中,重写toString方法即可:

@Override
	public String toString(){
		return EntityToString.getString(this,this.getClass( ));
	}

       效果图如下:

 

       这样格式统一了,同时避免了由于代码改动太多而导致出错率上升,最重要的是可以节省大量的时间。以最小的代价完成修改功能,这是很有必要的。

       

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/xiaoxian8023/article/details/24109185

共有 人打赏支持
白志华
粉丝 31
博文 265
码字总数 57524
作品 0
长沙
程序员
私信 提问
Java反射机制

一、什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。 二、哪里用到反射机制 有些时候...

长平狐
2012/10/09
479
0
利用反射机制实现对象转Map集合

分析问题 问题主要有以下几点 如何获取对象中的属性的名称? 如何获取对象的属性值?如何这个属性被private修饰,该如何处理? 返回的是一个对象该如何获取对象的属性参数呢? 解决问题 问题1...

架构师springboot
2018/12/06
0
0
编程思想 之「运行时类型识别、反射」

版权声明:Follow your heart and intuition. https://blog.csdn.net/qq_35246620/article/details/79576706 温馨提示:本系列博文(含示例代码)已经同步到 GitHub,地址为「java-skills」,...

维C果糖
2018/03/16
0
0
Java基础之反射(非常重要)

反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道...

Java-老刘
2018/05/15
0
0
Java核心机制:反射机制的原理及应用方法

一、java的核心机制 java有两种核心机制:java虚拟机(JavaVirtual Machine)与垃圾收集机制(Garbage collection): 1、Java虚拟机:是运行所有Java程序的抽象计算机,是Java语言的运行环境,在...

Java架构资源分享
2018/11/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud搭建微服务架构----流量回放

前言 系统微服务化后,传统的自测/测试方式都变得比较困难: 依赖的服务可能不稳定。 服务无法提供期望的响应数据。 缺少场景构造标准。 随着整体业务越来越复杂,微服务依赖的越来越多,测试...

春哥大魔王的博客
13分钟前
1
0
记一次springboot模块配置问题导致读取Apollo配置中心配置文件始终错误的问题

现在正在做的一个项目采用的是微服务,主框架是spring cloud,配置中心用的是携程的Apollo。 项目下有多个服务,在测试服务器上启动用户服务的时候发现在eureka中心另一个服务被启动了,尝试...

zcqshine
14分钟前
3
0
流处理和批处理框架的异同

分布式流处理需求日益增加,包括支付交易、社交网络、物联网(IOT)、系统监控等。业界对流处理已经有几种适用的框架来解决,下面我们来比较各流处理框架的相同点以及区别。 分布式流处理是对...

hblt-j
17分钟前
0
0
spring cloud 面试题

什么是springboot 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 创建独立的spring引用程序 main方法运行 嵌入的Tomcat 无需部署war文件 简化...

狼王黄师傅
19分钟前
1
0
前嗅ForeSpider教程:采集黄页88

以黄页88为例,采集当前列表页新闻的正文数据: 第一步:新建任务 ①点击左上角“加号”新建任务,如图1: 【图1】 ②在弹窗里填写采集地址,任务名称,如图2: 【图2】 ③点击下一步,选择进...

forespider
23分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部