java获取对象属性类型、属性名称、属性值

2023-05-16

因为项目需要用到,于是简单封装了一些常用的操作:

	/**
	 * 根据属性名获取属性值
	 * */
    private Object getFieldValueByName(String fieldName, Object o) {
        try {  
            String firstLetter = fieldName.substring(0, 1).toUpperCase();  
            String getter = "get" + firstLetter + fieldName.substring(1);  
            Method method = o.getClass().getMethod(getter, new Class[] {});  
            Object value = method.invoke(o, new Object[] {});  
            return value;  
        } catch (Exception e) {  
            log.error(e.getMessage(),e);  
            return null;  
        }  
    } 
    
    /**
     * 获取属性名数组
     * */
    private String[] getFiledName(Object o){
    	Field[] fields=o.getClass().getDeclaredFields();
       	String[] fieldNames=new String[fields.length];
    	for(int i=0;i<fields.length;i++){
    		System.out.println(fields[i].getType());
    		fieldNames[i]=fields[i].getName();
    	}
    	return fieldNames;
    }
    
    /**
     * 获取属性类型(type),属性名(name),属性值(value)的map组成的list
     * */
    private List getFiledsInfo(Object o){
    	Field[] fields=o.getClass().getDeclaredFields();
       	String[] fieldNames=new String[fields.length];
       	List list = new ArrayList();
       	Map infoMap=null;
    	for(int i=0;i<fields.length;i++){
    		infoMap = new HashMap();
    		infoMap.put("type", fields[i].getType().toString());
    		infoMap.put("name", fields[i].getName());
    		infoMap.put("value", getFieldValueByName(fields[i].getName(), o));
    		list.add(infoMap);
    	}
    	return list;
    }
    
    /**
     * 获取对象的所有属性值,返回一个对象数组
     * */
    public Object[] getFiledValues(Object o){
    	String[] fieldNames=this.getFiledName(o);
    	Object[] value=new Object[fieldNames.length];
    	for(int i=0;i<fieldNames.length;i++){
    		value[i]=this.getFieldValueByName(fieldNames[i], o);
    	}
    	return value;
    }	


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java获取对象属性类型、属性名称、属性值 的相关文章

  • 大学生创业团队组建的几点建议

    大学生创业是一条不归路 xff0c 创业的道路上充满了荆棘 道路虽然艰苦 xff0c 但很充实 如果就业 考研 考公务员是按常规出牌 xff0c 那么创业就是非常规出牌了 如果一个人要想成功 xff0c 我个人认为必须要按 非常规出牌 我自
  • bash: service: command not found(service命令未找到的) 错误的解决方法

    今天碰到一个问题 xff0c 问题如下 xff1a 在启动named服务时 xff0c 出现下面错误提示 xff1a bash service command not found lt wbr gt lt wbr gt 于是我到网上去一搜了
  • 多线程加速图像模板匹配

    多线程加速图像模板匹配 2010年09月05日 多线程加速图像模板匹配 首先这是个没有什么很好的结局的故事 所以下面这点文字不是为了表现一个怎么怎么好的结果 xff0c 而是整个让人头疼的过程 多线程加速算法的实现 xff0c 不是对于算法
  • 老公爱吃的菜(策略模式)

    将策略的上下文的构造函数换用简单工厂模式的话就将业务对象封装起来了 xff0c 客户端就只要了解Boy这个对象就ok了 xff0c 不需要自己去声明接口DreamGir的业务对象l 上下文 public class Boy private
  • Ubuntu 启动图形用户界面

    1 按ALT 43 CTRL 43 F1切换到字符界面 2 按ALT 43 CTRL 43 F7切换到图形界面 如果想 Ubuntu 在每次啟動到 command prompt xff0c 可以輸入以下指令 echo false sudo
  • AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图

    目前因为做人脸识别的一个小项目 xff0c 用到了AdaBoost的人脸识别算法 xff0c 因为在网上找到的所有的AdaBoost的简介都不是很清楚 xff0c 让我看看头脑发昏 xff0c 所以在这里打算花费比较长的时间做一个关于Ada
  • 汉化Windows Azure上的虚拟机

    目前海外Azure上的Windows虚拟机都是英文版 采用英文版可能遇到的问题是某些中文软件会产生乱码 为了支持中文 xff0c 需要做以下配置 xff1a 装中文语言包 xff1a 让VM可以支持zh CN字符集 xff0c 支持中文输入
  • 我看到过的最恐怖的一个接口:

    org springframework beans factory Interface InitializingBean All Known Implementing Classes AbstractAspectJAdvice Abstra
  • 写给恋爱中的男孩

    顶 写给恋爱中的男孩 xff08 包括女孩都要看哈 xff09 其实很多男孩子都不知道 xff0c 女孩子在冲他们发火后自己却转过身不断啜泣 其实很多男孩子都不知道 xff0c 女孩子从来不会真正生他们的气 xff0c 因为她是真的喜欢他在
  • A connection attempt failed because the connected party did not properly ..

    学PHP不久 xff0c 以前用的是人家搭好的环境AMPServer和NMPServer xff0c 但是是PHP5 2的 xff0c 想用PHP5 3的新特性啊 xff0c 就自己搭环境 xff0c 没想到遇到的问题还真不少 xff0c
  • Image 的 getRGB方法

    第一次自己翻译文章 xff0c 翻译不到位的地方忘体谅 xff01 废话少说直接上东西了 函数原型 public void getRGB int rgbData intoffset intscanlength intx inty intwi
  • pads 覆铜 设计 设置

    第十三节 覆铜 Copper Pouring 许多印制电路板 Printed Circuit Board 设计系统支持各种类型覆铜 Copper Pouring 或区域填充方式 xff0c 但是很少能够达到PADS Layout 的覆铜 C
  • SQLServer和VS的安装顺序

    1 种方法 先装SQLServer2005后装vs2005 2 只装vs2005 然后因为vs2005里面已经有了一个SQLServer的express版本了 不过里面没有装上管理工具 这个时候你只需要去给它装一个Microsoft SQL
  • Java多线程示例:4个售票员卖1000张火车票

    售票员 import java util Iterator import java util Map public class TicketSaler implements Runnable private Map lt String Bo
  • 格雷码的实现 (google 面试题)

    问题 xff1a 产生n位元的所有格雷码 格雷码 Gray Code 是一个数列集合 xff0c 每个数使用二进位来表示 xff0c 假设使用n位元来表示每个数字 xff0c 任两个数之间只有一个位元值不同 例如以下为3位元的格雷码 xff
  • 中新网 2 月 1 日电(IT 频道秦辰)按此前国家测绘地理信息局印发的《关于进一步加强互联网地图服务资质管理工作的通知》(下文简称《通知》)要求,今日起未申请...

    最近自己在做一个小东西 xff0c 用log4net日志组件来记录日志 xff0c 自己在前人的基础上加工总结 xff0c 拿出来给大家分享一下 xff0c 不足之处大拿们使劲拍砖 xff0c 感激不尽 xff01 第一步 xff1a 配置
  • 尝尝C#的语法糖(自动属性/匿名方法/Lamda表达式等)-小心蛀牙!

    语法糖 xff0c 意指那些没有给计算机语言添加新功能 xff0c 而只是对人类来说更 sweet 的语法 xff0c 意在使得编程风格更易读 C 2 0 xff0c 3 0发布的新特性 xff0c 除了泛型不是语法糖 xff0c 其他所有
  • 细说ASP.NET Forms身份认证

    用户登录是个很常见的业务需求 xff0c 在ASP NET中 xff0c 这个过程被称为身份认证 由于很常见 xff0c 因此 xff0c 我认为把这块内容整理出来 xff0c 与大家分享应该是件有意义的事 在开发ASP NET项目中 xf
  • Vue + D3 动态可视化图实现之五:世界地图

    2022 11 10 声明 xff08 这篇文章也被下架了 xff09 这个项目只是以 GTD 数据库为例做数据的统计及可视化 xff0c 不涉及对任何具体事件的分析和评论 xff0c 希望能恢复发表 xff01 文中地图数据取自互联网 x
  • 使用Nginx如何配置Tomcat访问日志记录真实IP

    使用Nginx作为反向代理时 xff0c Tomcat的日志记录的客户端IP就不在是真实的客户端IP xff0c 而是Nginx代理的IP 要解决这个问题可以在Nginx配置一个新的Header xff0c 用来存储 remote add

随机推荐