java中循环遍历实体类的属性和数据类型以及属性值
2023-09-14 08:57:51 时间
package com.walkerjava.test; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Date; /*** * 遍历实体类的属性和数据类型以及属性值 * * @author LiBaozhen * @date 2013-1-4 上午10:25:02 * @company * @version v1.3 * @see 相关类 * @since 相关/版本 */ public class ReflectTest { public static void reflectTest(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { // 获取实体类的所有属性,返回Field数组 Field[] field = model.getClass().getDeclaredFields(); // 遍历所有属性 for (int j = 0; j < field.length; j++) { // 获取属性的名字 String name = field[j].getName(); // 将属性的首字符大写,方便构造get,set方法 name = name.substring(0, 1).toUpperCase() + name.substring(1); // 获取属性的类型 String type = field[j].getGenericType().toString(); // 如果type是类类型,则前面包含"class ",后面跟类名 System.out.println("属性为:" + name); if (type.equals("class java.lang.String")) { Method m = model.getClass().getMethod("get" + name); // 调用getter方法获取属性值 String value = (String) m.invoke(model); System.out.println("数据类型为:String"); if (value != null) { System.out.println("属性值为:" + value); } else { System.out.println("属性值为:空"); } } if (type.equals("class java.lang.Integer")) { Method m = model.getClass().getMethod("get" + name); Integer value = (Integer) m.invoke(model); System.out.println("数据类型为:Integer"); if (value != null) { System.out.println("属性值为:" + value); } else { System.out.println("属性值为:空"); } } if (type.equals("class java.lang.Short")) { Method m = model.getClass().getMethod("get" + name); Short value = (Short) m.invoke(model); System.out.println("数据类型为:Short"); if (value != null) { System.out.println("属性值为:" + value); } else { System.out.println("属性值为:空"); } } if (type.equals("class java.lang.Double")) { Method m = model.getClass().getMethod("get" + name); Double value = (Double) m.invoke(model); System.out.println("数据类型为:Double"); if (value != null) { System.out.println("属性值为:" + value); } else { System.out.println("属性值为:空"); } } if (type.equals("class java.lang.Boolean")) { Method m = model.getClass().getMethod("get" + name); Boolean value = (Boolean) m.invoke(model); System.out.println("数据类型为:Boolean"); if (value != null) { System.out.println("属性值为:" + value); } else { System.out.println("属性值为:空"); } } if (type.equals("class java.util.Date")) { Method m = model.getClass().getMethod("get" + name); Date value = (Date) m.invoke(model); System.out.println("数据类型为:Date"); if (value != null) { System.out.println("属性值为:" + value); } else { System.out.println("属性值为:空"); } } } } }
http://blog.csdn.net/dongzhouzhou/article/details/8659836
相关文章
- Jmeter里的全能java测试sampler - Java request
- JAVA 分布式
- java服务突然被挂掉,停止服务处理方案
- JAVA Eclipse 启动 Eclipse 弹出“Failed to load the JNI shared library jvm_dll”怎么办
- java-Timer类使用方法
- Java实现 LeetCode 434 字符串中的单词数
- Java实现LeetCode #986 - Interval List Intersections
- Java实现 洛谷 P1618 三连击(升级版)
- Java实现回文判断
- Java实现 蓝桥杯VIP 算法提高 棋盘多项式
- Java实现 蓝桥杯 基础练习 特殊的数字
- j2ee项目Java代码性能优化要点(抄书)
- 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符
- java通过System.getProperty获取系统属性
- Java两种方法实现循环报数
- java 11 标准Java异步HTTP客户端
- 虚拟机centos 安装 redis 环境 linux 使用 java 远程连接 redis
- 【java】EJB(Enterprise Java Bean)概述
- java单元测试调用mybatis接口并执行
- Java如何获取IP属地 ip2region failed to create searcher with x:java.io.FileNotFoundException:( 系统找不到指定的路径)
- “java.lang.IllegalArgumentException: Failed to evaluate expression ‘ROLE_USER’”报错的解决
- JAVA学习绘图颜色及其笔画属性设置字体显示文字
- Java Instrumentation 内存马——主要是利用Instrumentation Java API来做内存注入,会用到反射机制,文中提到检测思路:注入jar包-> dump已加载class字节码->反编译成java代码-> 源码webshell检测
- Java:openjdk: error: Student is abstract; cannot be instantiated;java编译环境
- Java中的TreeSet
- JAVA开发讲义(二)-Java程序设计之数据之谜三