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

获取属性 修饰符:【在Field[]循环中使用】

String modifier = Modifier.toString(fields[i].getModifiers());
/**
 * 根据属性名获取属性值
 * */
   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;
   } 

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

  1. Java反射获取对象VO的属性值(通过Getter方法)

    有时候,需要动态获取对象的属性值. 比如,给你一个List,要你遍历这个List的对象的属性,而这个List里的对象并不固定.比如,这次User,下次可能是Company. e.g. 这次我需要做一个 ...

  2. java list按照 对象 指定多个字段属性进行排序

    ListUtils.Java---功能类 package PjectUtils; import java.lang.reflect.Field; import java.text.NumberForm ...

  3. java正则表达式获取指定HTML标签的指定属性值

    package com.mmq.regex; import java.util.ArrayList; import java.util.List; import java.util.regex.Mat ...

  4. 第五课 JAVA反射获取对象属性和方法(通过配置文件)

    Service1.java package reflection; public class Service1 { public void doService1(){ System.out.print ...

  5. 第五课 JAVA反射获取对象属性和方法

    package com.hero; import java.lang.reflect.Field; public class TestReflction5 { public static void m ...

  6. C#中通过反射方法获取控件类型和名称

    这个方法是简单的也是神奇的. 有木有想过,将自己项目中的所有类型,包括自定义类型的命名空间和名称全部获取出来? 有木有想过,有一种简便的方法可以自动化管理项目中的控件和窗体? 有木有想过... 首先, ...

  7. typescript 关于class属性类型定义被属性默认值覆盖的问题及解决方式

    问题来源于 React.component的第二个参数的类型定义问题,我构建了以下简化demo,方便描述问题: class P<STATE> { public state: STATE; ...

  8. 获取httpservletrequest所有参数的名称和值

    1.方法 private Map showParams(HttpServletRequest request) { Map map = new HashMap(); Enumeration param ...

  9. C#获取EF实体对象或自定义属性类的字段名称和值

    在年前上班的时候遇到了一个问题是这样描述的:我前台设计一个页面,是标签和文本框,当用户修改了哪个文本框的值,将该修改前的值.修改后的值,该值对应的字段,该值对应的行id获取到保存到数据库的某张表里.现 ...

随机推荐

  1. Mipmap与纹理过滤

    为了加快渲染速度和减少纹理锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为Mipmap. 使用DirectX Texture Tool(DX自带工具)预生成Mipmap ...

  2. 《Linux内核设计与实现》课本第五章学习笔记——20135203齐岳

    <Linux内核设计与实现>课本第五章学习笔记 By20135203齐岳 与内核通信 用户空间进程和硬件设备之间通过系统调用来交互,其主要作用有三个. 为用户空间提供了硬件的抽象接口. 保 ...

  3. Linux常用命令1

    jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有Java进程pid的命令. jps [ options ] [ host ...

  4. SQL server 表之间的关系生成图

    选择数据库名->数据库关系鼠标右键->新建数据库关系图 按着ctrl选择要添加的表 点击添加

  5. 转:Move all SQL Server system databases at one time

    Problem One task that you may need to do as a DBA is to move the system databases from one location ...

  6. ArcSDE for Microsoft SQL Server Post Installation图解(转)

    ArcSDE for Microsoft SQL Server Post Installation图解 使用ArcSDE作为空间数据引擎时,经常遇到服务无法启动的情况(启动服务时提示:本地计算机上的a ...

  7. Intellij IDEA使用Maven构建Scala项目

    1.安装IDEA的Scala插件       使用自带的在线安装方式较为简单.File--Setting--Plugins--Browse reposities   2.创建项目     File - ...

  8. lesson1:threadlocal的使用demo及源码分析

    本文中所使用的demo源码地址:https://github.com/mantuliu/javaAdvance 其中的类Lesson1ThreadLocal 本文为java晋级系列的第一讲,后续会陆续 ...

  9. BZOJ_2599_[IOI2011]Race_点分治

    BZOJ_2599_[IOI2011]Race_点分治 Description 给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N <= 200000, K <= 10 ...

  10. [20190213]学习bbed-恢复删除的数据.txt

    [20190213]学习bbed-恢复删除的数据.txt --//以前也做过类似测试,当时在用bbed做verify时错误都不处理,当时的想法就是能读出就ok了.--//而且当时也做成功,纯粹是依葫芦 ...