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<" +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( ));
}
效果图例如以下:
这样格式统一了,同一时候避免了由于代码修改太多而导致出错率上升。最重要的是能够节省大量的时间。以最小的代价完毕修改功能,这是非常有必要的。
java中使用反射获取pojo(实体)类的全部字段值的更多相关文章
- java中使用反射获取pojo(实体)类的所有字段值
出处:https://developer.aliyun.com/article/239346 说起反射,不得不说它实在是太强大了,通过反射就可以轻轻松松拿到各种东东,如果你想在项目中解除对某个类的依赖 ...
- java中通过反射获取方法并且调用(getMethod和invoke深入)实践
为了支持业务的快速变更,往往采用可配置的方式,将业务逻辑的处理部分配置在数据库中或者XMl文件里.配置什么,如何配置才更灵活,That's a problem. 以数据库配置为例(xml相同),在数据 ...
- java中抽象类是否可以继承实体类?
一道java 常见面试题,网上找到的几乎每个 java 面试笔试题大全或集锦里都能找到这道题. 题目如下:问: 抽象类是否可继承实体类 (concrete class) 答: 抽象类是可以继承实体类, ...
- 反射获取config实体类属性并赋值
/// <summary> /// 将实体类存入config /// </summary> /// <param name="enity">&l ...
- java中使用反射做一个工具类,来为指定类中的成员变量进行赋值操作,使用与多个类对象的成员变量的赋值。
//------------------------------------------------我是代码的分割线 // 首选是一个工具类,在该工具类里面,定义了一个方法,public void s ...
- Android利用反射机制为实体类属性赋值
在做android项目时,有时会遇到从网络上获取json类型数据,赋值给实体类,实体类属性少可以一个一个的赋值,如果实体类有很多属性,赋值可能就要耗很长的功夫了,幸好Java给我们提供了反射机制.下面 ...
- java 中利用反射机制获取和设置实体类的属性值
摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...
- 利用Java反射机制对实体类的常用操作工具类ObjectUtil
代码: ObjectUtil类: import java.lang.reflect.Field; import java.math.BigDecimal; import java.text.Simpl ...
- Java中的反射和注解
前言 在Java中,反射机制和注解机制一直是一个很重要的概念,那么他们其中的原理是怎么样呢,我们不仅仅需要会使用,更要知其然而之所以然. 目录 反射机制 反射如何使用 注解定义 注解机制原理 注解如何 ...
随机推荐
- 百度蜘蛛IP段分析
大家进行网站日志分析的时候,常见到很多不同IP段的百度蜘蛛,为了方便大家更好的进行日志分析,下面列举了百度不同IP段常见蜘蛛的一些详情情况,及所谓的降权蜘蛛,沙盒蜘蛛,高权重蜘蛛等等 下面的百度蜘蛛I ...
- HDU 5514 Frogs
Frogs Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID: 5514 ...
- 【java基础 8】垃圾收集算法及内存分配策略
本篇博客,主要介绍GC的收集算法以及根据算法要求所得的内存分配策略! 一.收集算法 收集算法,主要包括四种,分别是:Mark-Sweep(标记-清除).Copying(复制).Mark-Compact ...
- AVPlayerViewController视频播放器
前言 iOS8之后系统自带使用AVPlayerViewController播放视频 AVPlayerViewController AVPlayerViewController和导航控制器差不多,需要将 ...
- 使用Unity做2.5D游戏教程(二)
最近在研究Unity 3D,看了老外Marin Todorov写的教程很详细,就翻译过来以便自己参考,翻译不好的地方请多包涵. 这是使用Unity 游戏开发工具制作一个简单的2.5D 游戏系列教程的第 ...
- apache kafka参考
apache kafka参考 消息队列分类: 点对点: 消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息.这里要注意: 消息被消费以后,queue中不再有存储,所以 ...
- 【2018.11.8】小迟的比赛 / Yuno like cake / 格子填数
题目 $noip$ 欢乐赛真是欢乐,除了不欢乐的方面以外我都很欢乐. T1 鸡汤题目,故意输对后面的胜率又没有影响,为什么要故意输呢? 所以第二个决策是凑字用的,这题就是朴素递推概率,最后乘结果权值计 ...
- 更改UISwitch大小
UISwitch大小总是改不了...找了一个简便方法. mySwitch = [[UISwitch alloc] initWithFrame: CGRectMake( width - 55, hei ...
- EGO V2
Original EGO: mkdir -p ~/Library/Developer/Xcode/UserData/FontAndColorThemes; cd ~/Library/Developer ...
- 51NOD 1424 零树
Discription 有一棵以1为根的树,他有n个结点,用1到n编号.第i号点有一个值vi. 现在可以对树进行如下操作: 步骤1:在树中选一个连通块,这个连通块必须包含1这个结点. 步骤2:然后对这 ...