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

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

[java] view plaincopy

  1. /**
  2. * 根据属性名获取属性值
  3. * */
  4. private Object getFieldValueByName(String fieldName, Object o) {
  5. try {
  6. String firstLetter = fieldName.substring(0, 1).toUpperCase();
  7. String getter = "get" + firstLetter + fieldName.substring(1);
  8. Method method = o.getClass().getMethod(getter, new Class[] {});
  9. Object value = method.invoke(o, new Object[] {});
  10. return value;
  11. } catch (Exception e) {
  12. log.error(e.getMessage(),e);
  13. return null;
  14. }
  15. }
  16. /**
  17. * 获取属性名数组
  18. * */
  19. private String[] getFiledName(Object o){
  20. Field[] fields=o.getClass().getDeclaredFields();
  21. String[] fieldNames=new String[fields.length];
  22. for(int i=0;i<fields.length;i++){
  23. System.out.println(fields[i].getType());
  24. fieldNames[i]=fields[i].getName();
  25. }
  26. return fieldNames;
  27. }
  28. /**
  29. * 获取属性类型(type),属性名(name),属性值(value)的map组成的list
  30. * */
  31. private List getFiledsInfo(Object o){
  32. Field[] fields=o.getClass().getDeclaredFields();
  33. String[] fieldNames=new String[fields.length];
  34. List list = new ArrayList();
  35. Map infoMap=null;
  36. for(int i=0;i<fields.length;i++){
  37. infoMap = new HashMap();
  38. infoMap.put("type", fields[i].getType().toString());
  39. infoMap.put("name", fields[i].getName());
  40. infoMap.put("value", getFieldValueByName(fields[i].getName(), o));
  41. list.add(infoMap);
  42. }
  43. return list;
  44. }
  45. /**
  46. * 获取对象的所有属性值,返回一个对象数组
  47. * */
  48. public Object[] getFiledValues(Object o){
  49. String[] fieldNames=this.getFiledName(o);
  50. Object[] value=new Object[fieldNames.length];
  51. for(int i=0;i<fieldNames.length;i++){
  52. value[i]=this.getFieldValueByName(fieldNames[i], o);
  53. }
  54. return value;
  55. }
时间: 2024-10-23 23:21:02

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

Java 获取对象的所有属性及其对应的值

利用反射获取对象的所有属性及对应的值 1.获取属性名数组 private static String[] getFiledName(Object o) { Field[] fields = o.getClass().getDeclaredFields(); String[] fieldNames = new String[fields.length]; for (int i = 0; i < fields.length; i++) { fieldNames[i] = fields[i].getN

javascript获取对象直接量中的属性和属性值

javascript获取对象直接量中的属性和属性值:所谓的对象直接量简单来说就是,由大括号包裹的键值对列表,例如: var antzone={ webName:"蚂蚁部落", address:"青岛市南区", age:2 } 下面介绍一下如何获取对象直接量中的属性和属性值,代码如下: var antzone={ webName:"蚂蚁部落", address:"青岛市南区", age:2 } for(var prop in a

java获取获得Timestamp类型的当前系统时间

java获取取得Timestamp类型的当前系统时间java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = new Timestamp(System.currentTimeMillis()); 方法2: Date date = new Date(); Timestamp nousedate = new Timestamp(date.getTime()); -----------------------------下

获取对象的类型信息 (JavaScript)

function classof(o) { if (null == o) return 'Null'; if (undefined == o) return 'Undefined'; return Object.prototype.toString.call(o).slice(8, -1); } classof([]); classof({}); classof(Date); classof(new Date()); classof(/./); classof(1); classof(1.9);

JQuery获取对象标签类型

通过JQuery的selector,我们很容易的获取了对象.但是,如果想知道对象类型,进行不同的操作,该如何获取对象标签类型呢? $JQueryObject.prop("tagName"); 或者仅仅是判断类型 $JQueryObject.is("TR");//如果是<tr />返回true,否则返回false. 如果使用原生DOM选择器,还可以这样: document.getElementById("targetId").tagNa

Java 获取对象全部属性 包括 父类属性

今天由于业务需要,看一段数据库中的表转化成用户可以看懂的数据,也就是把一些字段比如Date用ms存的,转化为'yyyy-MM-dd'这种格式,但是由于字段太多,所以利用Java反射机制自带的BeanUtils相关的方法来进行转化(要求两个类的属性名称相同),当然这个方法只支持基本数据类型,如Long,Integer,String,Short之类的转化,但是像Date类型就需要自己手动判断来转,这就出现了今天所遇到的坑 先看下反射机制是如何获取类的方法的: Class clazz = object

反射之取类中类的属性、变量名称及其值

类中类 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Reflection; 5 using System.Text; 6 using System.Threading.Tasks; 7 8 namespace 二重类嵌套取内层的属性变量名 9 { 10 public class Pro1 11 { 12 string name="张三"; 13 int n

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

问题来源于 React.component的第二个参数的类型定义问题,我构建了以下简化demo,方便描述问题: class P<STATE> { public state: STATE; } interface Obj { arr: Obj[]; } class Test1 extends P<Obj> { public state = {arr: []}; func(obj: Obj) { this.state.arr.push(obj);// 这里ts在obj上抛错 Error

Java 常用对象-基本类型的封装类

2017-11-04 20:39:26 基本类型封装类:基本类型的封装类的好处是可以在对象中定义更多的功能方法操作该数据. 常用操作之一:用于基本数据类型与字符串的转换. 基本类型和包装类的对应: byte  Byte,short  Short,int  Integer,long  Long,float  Float,double  Double,char  Character,boolean  Boolean. 下面以Integer为例: Integer:Integer 类在对象中包装了一个基