转自: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反射机制获取该类的所有属性类型、值的更多相关文章

  1. java反射机制获取自定义注解值和方法

    由于工作需求要应用到java反射机制,就做了一下功能demo想到这些就做了一下记录 这个demo目的是实现动态获取到定时器的方法好注解名称,废话不多说了直接上源码 1.首先需要自定义注解类 /** * ...

  2. Java反射机制获取Class文件

    JAVA反射机制是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象方法的功能称为 ...

  3. Java反射机制(获取Class对象的三种方式+获取Class中的构造函数进行对象的初始化+获取反射类的字段+获取反射类的一般方法)

    反射技术其实就是动态加载一个指定的类,并获取该类中的所有内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员,简单来说:反射技术可以对一个类进行解剖,反射大大增强 ...

  4. 1个比较简单的使用java反射机制获取前台数据进行数据封装的例子

    //利用反射机制 和 从request获取所有参数的形式来构建查询对象 CustomerChooseSearchParma searchObject = new CustomerChooseSearc ...

  5. 运用java反射机制获取实体方法报错,java.lang.NoSuchMethodException: int.<init>(java.lang.String)

    错误的原因是我的Student实体,成员变量数据类型,使用了int基本数据类型,改成Integer包装类型即可.

  6. 通过java反射机制,修改年龄字段的值

    需求:将生日转为年龄 /** * 获取年龄值 */ public List getAgeInfo(List list) throws Exception { if (null == list || l ...

  7. kettle job如何利用java的反射机制获取执行的sql语句

    kettle job中的JavaScript如何获取同一个job中SQL步骤的执行语句并让执行语句记录在日志中呢?首先写日志需要用到job中JavaScript写日志的方法,其次是利用java反射机制 ...

  8. Java 基础之详解 Java 反射机制

    一.什么是 Java 的反射机制?   反射(Reflection)是Java的高级特性之一,是框架实现的基础,定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: ...

  9. Java反射机制--笔记

    1.认识Class类 任何一个类都是Class类的实例对象,这个实例对象有三种表示方式. /*java 反射机制*/ // 获取类的方法 UserDao userDao = new UserDao() ...

随机推荐

  1. BZOJ4008:[HNOI2015]亚瑟王(DP,概率期望)

    Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个 ...

  2. 3109. [CQOI2013]新数独【DFS】

    Description Input 输入一共15行,包含一个新数独的实例.第奇数行包含左右方向的符号(<和>),第偶数行包含上下方向的符号(^和v).   Output 输出包含9行,每行 ...

  3. gluoncv 导入方式

    了解了sys.path和python 的import 的话,之前修改gluoncv 的方式就可以有了新的简单的方法: 如果你pip install gluoncv的,然后脚本又git clone了,发 ...

  4. HDU 2076 夹角有多大

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2076 夹角有多大(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java ...

  5. 软工之404 Note Found团队

    如果记忆是一个罐头的话,我希望这一罐罐头不会过期----<重庆森林> 404 Note Found Team 如果记忆是一个备忘录的话,别说了,它不会过期----<404 Note ...

  6. flashback query闪回数据

    误删除了部分重要数据,已提交,需要恢复.首先尝试flashback query闪回数据. 数据库运行在归档模式,首先确认数据库的SCN的变化: SQL> col fscn for 9999999 ...

  7. 闲来无事做了一个项目,内有redis,EasyUI样式简单应用,七层分页查询,API跨域。

    <link href="~/jquery-easyui-1.5.3/themes/default/easyui.css" rel="stylesheet" ...

  8. java基础需要掌握的内容

    一.Java的基本程序设计结构 二.对象与类 三.继承 四.接口.lambda表达式与内部类 五.异常,断言与日志 六.泛型程序设计 七.集合 八.并发(线程) 九.输入与输出(IO流) 十.网络 十 ...

  9. jQuery实现页面回到顶部功能

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  10. Python-条件语句和循环语句

    ·条件语句 笔记: If  布尔值: print(‘hello,world!’) 当表达式为布尔表达式时,Flase   None  0   ””    ()    []    {} 都视为假! @ ...