java反射取实体字符串_java中使用反射获取pojo(实体)类的全部字段值

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

今天跟大家分享的是通过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,\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( ));

}

效果图例如以下:

915b0f1112730b70408ab0cd34f7f182.png 

e057d5fe3dd96339cefb24d83a5eaab3.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值