方法使用了这俩个包下的 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); }
转自:http://blog.csdn.net/sd4000784/article/details/7448221
相关推荐
接下来,我们创建一个名为`ReflectorClass`的辅助类,其中包含一个静态方法`getPropertyName`,这个方法接受一个对象实例作为参数,通过反射获取该对象的所有属性名及对应的类型,并返回一个字符串,每个属性名与...
Java反射机制的主要作用包括:获取类的所有属性和方法、构造动态实例、调用类的方法等。通过反射,程序可以动态地创建对象和调用其方法,从而实现更灵活的功能。 #### 二、Java反射机制的由来与发展 Java反射机制...
Java 反射机制是 Java 语言中的一个重要特性,它允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并调用对象的方法,甚至修改对象的状态。这一机制极大地增强了 Java 程序的灵活性和可扩展性,尤其是在...
总之,Java反射机制是Java程序员必备的技能之一,它提供了对程序运行时类型信息的访问和操作,极大地扩展了Java代码的灵活性和可扩展性。通过深入学习和实践,我们可以更好地理解和利用这一强大的工具。
此方法通过`Class.forName`获取到类的`Class`对象,然后调用`getDeclaredMethods`获取该类声明的所有方法(包括私有和受保护的方法)。遍历这些方法,打印出每个方法的修饰符、返回类型、方法名及参数列表。 ##### ...
Java反射机制是Java编程语言中一个强大的特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用方法以及...
通过Class.forName()加载指定类,然后调用getDeclaredMethods()方法来获取该类的所有方法,并打印出来。 - ReflectTester类:这个类提供了一个copy方法,展示了如何通过反射机制来创建一个和给定对象具有相同类型的...
### Java反射机制深入理解 #### 一、反射机制概述 Java反射机制是一种强大的工具,它允许程序在运行时检查和操作任何类、方法、构造函数和字段等元素。这种能力对于构建灵活的应用程序和框架非常有用,特别是那些...
这个方法首先通过 `Class.forName(className)` 得到该类的 Class,然后通过 `getField(fieldName)` 得到类声明的属性,最后通过 `field.get(ownerClass)` 得到该静态属性的实例。 要执行某对象的方法,我们可以使用...
2. 通过Java反射机制,获取用户选择的数据列信息,并将其转换为Excel文件的格式。 3. 将转换后的数据写入到Excel文件中,并保存到指定的文件路径中。 该方法可以实现用户自行选择数据列的Excel导出,提高了导出文件...
此示例中,通过`Class.forName()`方法加载指定类,并通过`getDeclaredMethods()`方法获取该类声明的所有方法。 ##### 4.2 ReflectTester 示例 此示例演示了如何使用Reflection API复制一个对象的所有属性。 ```...
Java反射机制是Java编程语言中一个强大的特性,它允许运行时的程序动态地获取类的信息并操作类的对象。在Java中,反射主要涉及到`java.lang.Class`类、`java.lang.reflect`包下的类如`Constructor`、`Method`和`...
要获取类的私有属性,我们需要先获得该类的`Class`对象,这可以通过`Class.forName()`方法或者`MyClass.class`的方式实现。然后,我们可以使用`getDeclaredFields()`方法获取类的所有声明的字段,包括私有的。这个...
Java反射机制是Java编程语言中一项强大的工具,它允许程序在运行时检查和操作类、接口、对象等的内部信息。反射机制的核心在于能够在运行时动态地获取类的信息,并且可以动态调用对象的方法,创建对象,甚至修改对象...
一旦获取到`Class`对象,我们就可以进一步获取该类的所有公共、私有、受保护和默认访问级别的属性和方法,这在处理未知类型的对象或者实现通用逻辑时非常有用。 其次,反射机制支持在运行时创建对象。使用`Class`...
1. **动态获取类的信息**:可以在运行时判断任意一个对象所属的类,并且可以获取该类的详细信息,包括其所有声明的字段、方法和构造器等。 2. **动态创建对象**:可以在运行时创建任意一个类的对象。 3. **动态调用...
首先,我们通过`Class`类获取对象的类信息,然后遍历该类的所有公共方法,找到以`get`开头的方法(通常是getter方法),通过`invoke()`方法调用这些方法获取属性值。将这些属性名和属性值组合成JSON格式的字符串。...
1. **动态获取类的信息**:可以在运行时判断任意一个对象所属的类,并且可以获取该类的详细信息,包括其所有声明的字段、方法和构造器等。 2. **动态创建对象**:可以在运行时创建任意一个类的对象。 3. **动态调用...
### Java反射机制简介 #### 一、什么是Java反射机制? Java反射机制是Java语言提供的一种在运行时访问类和对象信息的能力。通过反射,我们可以在程序运行时动态地获取类的信息(如类名、方法、构造函数等)并操作...