要获取对象的所有属性可以使用getDeclaredFields()

方法会返回一个Field数组

遍历这个数组几个遍历所有属性

注意使用这个方法会抛出4个异常

然后根据属性的类型选择执行对应的内容

public static void eachProperties(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{

Field[] field = model.getClass().getDeclaredFields(); //获取实体类的所有属性,返回Field数组

for(int j=0 ; j

String name = field[j].getName(); //获取属性的名字

System.out.println("attribute name:"+name);

name = name.substring(0,1).toUpperCase()+name.substring(1); //将属性的首字符大写,方便构造get,set方法

String type = field[j].getGenericType().toString(); //获取属性的类型

if(type.equals("class java.lang.String")){ //如果type是类类型,则前面包含"class ",后面跟类名

...

}

if(type.equals("class java.lang.Integer")){

...

}

if(type.equals("class java.lang.Short")){

...

}

if(type.equals("class java.lang.Double")){

...

}

if(type.equals("class java.lang.Boolean")){

...

}

if(type.equals("class java.util.Date")){

...

}

}

}

具体执行的内容就是重点了

我们知道模型的属性都会有对应的getter和setter方法

只需要得到对应的getter和setter方法即可获取和设置属性

这里就需要用到getMethod方法

获得getter方法

方法有分带参数和不带参数,我们知道getter方法是不带参数的

获得getter方法如下

Method m = model.getClass().getMethod("get"+name);

获得setter方法

如果是带参数的setter方法,就应该把参数的类型做封装成一个Class>泛型数组传入getMethod方法的第二个参数

例如参数是String类型的setter方法如下

Method m = model.getClass().getMethod("set"+name, new Class[] {String.class});

执行getter方法

String value = (String) m.invoke(model);

执行setter方法

m.invoke(model,new Object[] {new String("new value")});

from: http://zhenhappy.github.io/2015/10/26/Java/Java-Each-Properties/

java遍历对象的属性_Java遍历对象所有属性相关推荐

  1. java访问对象的属性_java访问对象的属性和行为详细介绍

    每一个对象都会有属于自己的属性和行为,下面的文章就对java访问对象的属性和行为做了一下详细的介绍. 对象的属性和行为在类当中体现为成员变量和成员方法,其中成员变量对应对象的属性,成员方法对应对象的行 ...

  2. 遍历和添加json对象的属性 和 遍历普通js对象的属性

    1. 遍历 json 对象的属性 //定义json对象 var person= { name: 'zhangsan', pass: '123', fn: function(){ alert(this. ...

  3. 实例对象的属性和原型对象中的属性重名问题 神奇的原型链 继承 继承案例

    实例对象的属性和原型对象中的属性重名问题 <!DOCTYPE html> <html lang="en"> <head><meta cha ...

  4. java父类引用子类属性_Java多态性详解——父类引用子类对象

    面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据. 继承是为了重用父类代码,同时为实现多态性作准备.那么什么是多 ...

  5. java html对象属性_java中对象属性可以是另外一个对象或对象的参考

    7.对象的属性可以是另外一个对象或对象的参考 通过这种方法可以迅速构建一个比较大的系统. class Motor { Light[] lights; Handle left, right; KickS ...

  6. java map对象排序输出_java实现对象的排序(List和Map)

    java实现对象的排序(List和Map) List和Map的排序 在实际的开发当中,我们经常 在文件浏览的时候经常有多种浏览方式,按时间整箱排序,逆向排序,按大小正逆向排序 ,按 按价格正逆向排序, ...

  7. java中对象的生存期_Java中对象的生存周期

    文章目录 JAVA对象的生存周期 1.创建阶段(Created) 为对象分配内存需要考虑的问题 2.应用阶段(In Use) 3.不可见阶段(Invisible) 4.不可达阶段(Unreachabl ...

  8. java input是关键字吗_Java中对象的串行化(Serialization)和transient关键字 - 金色阳光...

    Java中对象的串行化(Serialization)和transient关键字: 对象的串行化(Serialization) 一.串行化的概念和目的 1.什么是串行化 对象的寿命通常随着生成该对象的程 ...

  9. java判断空对象为空_Java判断对象是否为空(包括null ,)的方法

    本文实例为大家分享了Java判断对象是否为空的具体代码,供大家参考,具体内容如下 package com.gj5u.publics.util; import java.util.List; /** * ...

  10. java set循环取值_Java遍历Map和遍历Set

    Java遍历Map public static void main(String[] args) { Map map = new HashMap(); map.put("1", & ...

最新文章

  1. 脚踏板USB接口与无线遥控连接方案论证
  2. 阿里云工业互联网平台开发样例
  3. Homebrew安装不要改hosts了,直接用这个国内源才爽!
  4. java中的图形界面编辑界面_第58节:Java中的图形界面编程-GUI
  5. Go 语言范围(Range)
  6. mysql 函数substring_index()
  7. #把函数当作参数传给另一个函数
  8. vue:axios二次封装,接口统一存放
  9. jquery 插件 国外
  10. 1.4.2 真正的建造者模式(3.2)
  11. Matlab图像处理系列2———空间域平滑滤波器
  12. 【锐捷交换机】清除密码
  13. Android TextView水平跑马灯
  14. 【翻译】图解Janusgraph系列-事务详解(Janusgraph Transactions)
  15. 5G新通话新在哪儿?全新技术带来通话变革
  16. 5G推动下,XR的需求“爆发”会来自B端还是C端?...
  17. tomcat上部署的solr的移植以及数据的备份与恢复
  18. 计算机教学音乐,计算机音乐的教学和应用研究
  19. fastTEXT入门自然语言处理NLP
  20. 主流相机RTSP地址格式

热门文章

  1. IE Tab Plus 安装设置说明
  2. matlab 模糊聚类改进,matlab模糊聚类
  3. n9 android rom,三星N935K官方固件rom刷机包_三星N935K线刷包_系统包下载
  4. BT656视频传输标准
  5. r语言调用python_如何在Rstudio中使用python 语言 (图文详解)
  6. 51单片机驱动——DS18B20
  7. linux中tailf命令详解,linux tailf命令详解
  8. Android本地音乐播放器(二)
  9. 含泪推荐四款超级好用的电脑软件,值得收藏
  10. 华中科技大学计算机组成原理教材,2017华中科技大学《计算机组成原理》考研套装资料...