`

通过java反射机制获取该类的所有属性类型、值

    博客分类:
  • java
阅读更多

通过java反射机制获取该类的所有属性类型、值

反射

方法使用了这俩个包下的 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方法
     
     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);
 }

分享到:
评论

相关推荐

    利用反射机制动态获取对象属性名称及数据类型

    接下来,我们创建一个名为`ReflectorClass`的辅助类,其中包含一个静态方法`getPropertyName`,这个方法接受一个对象实例作为参数,通过反射获取该对象的所有属性名及对应的类型,并返回一个字符串,每个属性名与...

    java 反射取得类的私有属性,通过私有属性取得属性值

    要获取类的私有属性,我们需要先获得该类的`Class`对象,这可以通过`Class.forName()`方法或者`MyClass.class`的方式实现。然后,我们可以使用`getDeclaredFields()`方法获取类的所有声明的字段,包括私有的。这个...

    Java反射机制 Java反射机制

    Java反射机制的主要作用包括:获取类的所有属性和方法、构造动态实例、调用类的方法等。通过反射,程序可以动态地创建对象和调用其方法,从而实现更灵活的功能。 #### 二、Java反射机制的由来与发展 Java反射机制...

    java 反射机制详解

    Java 反射机制是 Java 语言中的一个重要特性,它允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并调用对象的方法,甚至修改对象的状态。这一机制极大地增强了 Java 程序的灵活性和可扩展性,尤其是在...

    北大青鸟java反射机制

    总之,Java反射机制是Java程序员必备的技能之一,它提供了对程序运行时类型信息的访问和操作,极大地扩展了Java代码的灵活性和可扩展性。通过深入学习和实践,我们可以更好地理解和利用这一强大的工具。

    Java反射机制Demo

    此方法通过`Class.forName`获取到类的`Class`对象,然后调用`getDeclaredMethods`获取该类声明的所有方法(包括私有和受保护的方法)。遍历这些方法,打印出每个方法的修饰符、返回类型、方法名及参数列表。 ##### ...

    通过反射获得实体类的字段和值

    在深入探讨如何通过反射获取实体类的字段和值之前,我们先来理解一下反射是什么以及它在.NET框架中的作用。反射是一种强大的编程技术,允许运行时动态地获取类型的信息并操作对象。它提供了对程序集、模块、类型、...

    java反射机制文档及代码

    Java反射机制是Java编程语言中一个强大的特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用方法以及...

    JAVA反射机制详解

    Java反射机制是Java语言提供的一种基础功能,通过反射机制,可以在运行时分析类的属性和方法,并动态调用对象的方法。在Java的java.lang.reflect包中包含了一系列的类来支持反射机制的实现,下面详细介绍一下这些类...

    java 反射 调用私有方法(有参数私有方法)获取私有属性值

    总结起来,Java反射为我们提供了在运行时操作类、方法和属性的强大工具,包括调用私有方法和获取私有属性值。然而,它也是一把双刃剑,使用时需权衡利弊,确保代码的稳定性和安全性。在处理私有成员时,务必注意对...

    java 反射机制

    ### Java反射机制深入理解 #### 一、反射机制概述 Java反射机制是一种强大的工具,它允许程序在运行时检查和操作任何类、方法、构造函数和字段等元素。这种能力对于构建灵活的应用程序和框架非常有用,特别是那些...

    java反射机制及Method.invoke解释

    这个方法首先通过 `Class.forName(className)` 得到该类的 Class,然后通过 `getField(fieldName)` 得到类声明的属性,最后通过 `field.get(ownerClass)` 得到该静态属性的实例。 要执行某对象的方法,我们可以使用...

    Reflection_in_Java.zip_in_java 反射_java 反射机制_java反射_反射机制

    Java反射机制是Java编程语言中一个强大的特性,它允许运行时的程序动态地获取类的信息并操作类的对象。在Java中,反射主要涉及到`java.lang.Class`类、`java.lang.reflect`包下的类如`Constructor`、`Method`和`...

    java反射机制PPT

    Java反射机制是Java编程语言中一项强大的工具,它允许程序在运行时检查和操作类、接口、对象等的内部信息。反射机制的核心在于能够在运行时动态地获取类的信息,并且可以动态调用对象的方法,创建对象,甚至修改对象...

    基于Java反射机制的Excel文件导出实现.pdf

    2. 通过Java反射机制,获取用户选择的数据列信息,并将其转换为Excel文件的格式。 3. 将转换后的数据写入到Excel文件中,并保存到指定的文件路径中。 该方法可以实现用户自行选择数据列的Excel导出,提高了导出文件...

    java反射机制学习笔记+反射机制实操案例

    首先,我们通过`Class`类获取对象的类信息,然后遍历该类的所有公共方法,找到以`get`开头的方法(通常是getter方法),通过`invoke()`方法调用这些方法获取属性值。将这些属性名和属性值组合成JSON格式的字符串。...

    java的反射机制

    1. **动态获取类的信息**:可以在运行时判断任意一个对象所属的类,并且可以获取该类的详细信息,包括其所有声明的字段、方法和构造器等。 2. **动态创建对象**:可以在运行时创建任意一个类的对象。 3. **动态调用...

    Java 反射机制浅析

    一旦获取到`Class`对象,我们就可以进一步获取该类的所有公共、私有、受保护和默认访问级别的属性和方法,这在处理未知类型的对象或者实现通用逻辑时非常有用。 其次,反射机制支持在运行时创建对象。使用`Class`...

Global site tag (gtag.js) - Google Analytics