通过java反射机制获取该类的所有属性类型、值
转自:http://blog.csdn.net/sd4000784/article/details/7448221
方法使用了这俩个包下的 field 和method
import Java.lang.reflect.Field;
import java.lang.reflect.Method;
- public static void getObjectValue(Object object) throws Exception {
- //我们项目的所有实体类都继承BaseDomain (所有实体基类:该类只是串行化一下)
- //不需要的自己去掉即可
- if (object != null && object instanceof BaseDomain) {//if (object!=null ) ----begin
- // 拿到该类
- Class<?> clz = object.getClass();
- // 获取实体类的所有属性,返回Field数组
- Field[] fields = clz.getDeclaredFields();
- for (Field field : fields) {// --for() begin
- System.out.println(field.getGenericType());//打印该类的所有属性类型
- // 如果类型是String
- if (field.getGenericType().toString().equals(
- "class java.lang.String")) { // 如果type是类类型,则前面包含"class ",后面跟类名
- // 拿到该属性的gettet方法
- /**
- * 这里需要说明一下:他是根据拼凑的字符来找你写的getter方法的
- * 在Boolean值的时候是isXXX(默认使用ide生成getter的都是isXXX)
- * 如果出现NoSuchMethod异常 就说明它找不到那个gettet方法 需要做个规范
- */
- Method m = (Method) object.getClass().getMethod(
- "get" + getMethodName(field.getName()));
- String val = (String) m.invoke(object);// 调用getter方法获取属性值
- if (val != null) {
- System.out.println("String type:" + val);
- }
- }
- // 如果类型是Integer
- if (field.getGenericType().toString().equals(
- "class java.lang.Integer")) {
- Method m = (Method) object.getClass().getMethod(
- "get" + getMethodName(field.getName()));
- Integer val = (Integer) m.invoke(object);
- if (val != null) {
- System.out.println("Integer type:" + val);
- }
- }
- // 如果类型是Double
- if (field.getGenericType().toString().equals(
- "class java.lang.Double")) {
- Method m = (Method) object.getClass().getMethod(
- "get" + getMethodName(field.getName()));
- Double val = (Double) m.invoke(object);
- if (val != null) {
- System.out.println("Double type:" + val);
- }
- }
- // 如果类型是Boolean 是封装类
- if (field.getGenericType().toString().equals(
- "class java.lang.Boolean")) {
- Method m = (Method) object.getClass().getMethod(
- field.getName());
- Boolean val = (Boolean) m.invoke(object);
- if (val != null) {
- System.out.println("Boolean type:" + val);
- }
- }
- // 如果类型是boolean 基本数据类型不一样 这里有点说名如果定义名是 isXXX的 那就全都是isXXX的
- // 反射找不到getter的具体名
- if (field.getGenericType().toString().equals("boolean")) {
- Method m = (Method) object.getClass().getMethod(
- field.getName());
- Boolean val = (Boolean) m.invoke(object);
- if (val != null) {
- System.out.println("boolean type:" + val);
- }
- }
- // 如果类型是Date
- if (field.getGenericType().toString().equals(
- "class java.util.Date")) {
- Method m = (Method) object.getClass().getMethod(
- "get" + getMethodName(field.getName()));
- Date val = (Date) m.invoke(object);
- if (val != null) {
- System.out.println("Date type:" + val);
- }
- }
- // 如果类型是Short
- if (field.getGenericType().toString().equals(
- "class java.lang.Short")) {
- Method m = (Method) object.getClass().getMethod(
- "get" + getMethodName(field.getName()));
- Short val = (Short) m.invoke(object);
- if (val != null) {
- System.out.println("Short type:" + val);
- }
- }
- // 如果还需要其他的类型请自己做扩展
- }//for() --end
- }//if (object!=null ) ----end
- }
- // 把一个字符串的第一个字母大写、效率是最高的、
- private static String getMethodName(String fildeName) throws Exception{
- byte[] items = fildeName.getBytes();
- items[0] = (byte) ((char) items[0] - 'a' + 'A');
- return new String(items);
- }
通过java反射机制获取该类的所有属性类型、值的更多相关文章
- java反射机制获取自定义注解值和方法
由于工作需求要应用到java反射机制,就做了一下功能demo想到这些就做了一下记录 这个demo目的是实现动态获取到定时器的方法好注解名称,废话不多说了直接上源码 1.首先需要自定义注解类 /** * ...
- Java反射机制获取Class文件
JAVA反射机制是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象方法的功能称为 ...
- Java反射机制(获取Class对象的三种方式+获取Class中的构造函数进行对象的初始化+获取反射类的字段+获取反射类的一般方法)
反射技术其实就是动态加载一个指定的类,并获取该类中的所有内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员,简单来说:反射技术可以对一个类进行解剖,反射大大增强 ...
- 1个比较简单的使用java反射机制获取前台数据进行数据封装的例子
//利用反射机制 和 从request获取所有参数的形式来构建查询对象 CustomerChooseSearchParma searchObject = new CustomerChooseSearc ...
- 运用java反射机制获取实体方法报错,java.lang.NoSuchMethodException: int.<init>(java.lang.String)
错误的原因是我的Student实体,成员变量数据类型,使用了int基本数据类型,改成Integer包装类型即可.
- 通过java反射机制,修改年龄字段的值
需求:将生日转为年龄 /** * 获取年龄值 */ public List getAgeInfo(List list) throws Exception { if (null == list || l ...
- kettle job如何利用java的反射机制获取执行的sql语句
kettle job中的JavaScript如何获取同一个job中SQL步骤的执行语句并让执行语句记录在日志中呢?首先写日志需要用到job中JavaScript写日志的方法,其次是利用java反射机制 ...
- Java 基础之详解 Java 反射机制
一.什么是 Java 的反射机制? 反射(Reflection)是Java的高级特性之一,是框架实现的基础,定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: ...
- Java反射机制--笔记
1.认识Class类 任何一个类都是Class类的实例对象,这个实例对象有三种表示方式. /*java 反射机制*/ // 获取类的方法 UserDao userDao = new UserDao() ...
随机推荐
- webkit架构
简要的说,WebKit由三个模块组成:JavaScriptCore.WebCore 和 WebKit.WebKit作为了整个项目的名称. JavaScriptCore:是JavaScript解释器: ...
- Java集合源码 -- List列表
List概述 List是一个有序,可重复的集合,可以在List的中间插入和移除元素,根据整数索引访问元素 下图是List集合的框架图 下面是对上图的简单介绍 AbstractCollection: 提 ...
- Odoo中的模型在哪里
Odoo 模型存在 Python 的模块之外, 在中间注册表那里. 对于这个注册表,可以通过self.env[<model name>]进入,例如, 通过res.partner 模型获取对 ...
- 随手练——洛谷-P1002 过河卒(动态规划入门)
题目链接:https://www.luogu.org/problemnew/show/P1002 题目还算良心,提醒了结果可能很大,确实爆了int范围, 这是一开始写的版本,用递归做的,先给地图做标记 ...
- Unicode字符集和UTF-8, UTF-16, UTF-32编码
ASCII 在过去的计算中,ASCII码被用来表示字符.英语只有26个字母和其他一些特殊字符和符号. 下表提供了ASCII字符及其相应的十进制和十六进制值. 可以从上面的表中推断,在十进制数系统中,A ...
- 调试libRTMP代码来分析RTMP协议
RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写.该协议基于TCP,是一个协议族,常用在视频直播领域.RTMP协议的默认端口是1935. 学习一个协议 ...
- 一篇很好的解释了.Net Core, .Net Framework, .Net standard library, Xamarin 之间关系的文章 (转载)
Introducing .NET Standard In my last post, I talked about how we want to make porting to .NET Core e ...
- 大话Linux内核中锁机制之原子操作、自旋锁
转至:http://blog.sina.com.cn/s/blog_6d7fa49b01014q7p.html 很多人会问这样的问题,Linux内核中提供了各式各样的同步锁机制到底有何作用?追根到底其 ...
- flashback query闪回数据
误删除了部分重要数据,已提交,需要恢复.首先尝试flashback query闪回数据. 数据库运行在归档模式,首先确认数据库的SCN的变化: SQL> col fscn for 9999999 ...
- 控制台打印九九乘法表(for循环的使用)
控制台输出九九乘法表 for(int i=1;i<=9;i++){ for(int j = 1; j <= i; j ++) { System.out.print(j+"*&qu ...