`

java 反射获取 实体里的数据

    博客分类:
  • java
 
阅读更多

public class test {

 

  

/**

* <b>function:</b> 

* @project xcjpar

* @package com.xcj.common.util  

* @fileName @param args

* @createDate May 21, 2014 5:52:38 PM

* @author yy.niu

* @throws ClassNotFoundException 

* @throws IllegalAccessException 

* @throws IllegalArgumentException 

* @throws NoSuchFieldException 

* @throws SecurityException 

* @throws InvocationTargetException 

* @throws NoSuchMethodException 

* @throws InvocationTargetException 

*/

public static void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException, SecurityException, NoSuchFieldException, NoSuchMethodException, InvocationTargetException {

FoursArea fa = new FoursArea();

fa.setCode("0001");

fa.setPartnerId(11);

FoursArea fas = (FoursArea)testReflect(fa,FoursArea.class);

System.out.println(fas.getModifyDate());

System.out.println(fas.getDescription());

System.out.println(fas.getLeader());

System.out.println(fas.getMobile());

System.out.println(fas.getCreateDate());

System.out.println(fas.getName());

 

 

     

}

public static <T> T testReflect(Object model,Class<?> cals) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, NoSuchFieldException{

       Field[] field = model.getClass().getDeclaredFields();        //获取实体类的所有属性,返回Field数组  

           for(int j=0 ; j<field.length ; j++){     //遍历所有属性

               String nam = field[j].getName();    //获取属性的名字

               String name = nam;

               name  = name.substring(0,1).toUpperCase()+name.substring(1);

               System.out.println("attribute name:"+name);                

               String type = field[j].getGenericType().toString();    //获取属性的类型

               if(type.equals("class java.lang.String")){   //如果type是类类型,则前面包含"class ",后面跟类名

                   Method m = model.getClass().getMethod("get"+name);

                   String value = (String) m.invoke(model);    //调用getter方法获取属性值

                   if(value != null){

                       System.out.println("attribute value:"+value);

                   }else{

                   Field fielda = FoursArea.class.getDeclaredField(nam);

                   FoursArea fa = new FoursArea();

                   String  values = "1";

                      boolean accessible = fielda.isAccessible();

                      fielda.setAccessible(true);

                      fielda.set(fa, values);

                      fielda.setAccessible(accessible);

                      System.out.println(fa.getName());

 

                   }

                   

               }

               if(type.equals("class java.lang.Integer")){     

                   Method m = model.getClass().getMethod("get"+name);

                   Integer value = (Integer) m.invoke(model);

                   if(value != null){

                       System.out.println("attribute value:"+value);

                   }else{

                  

                   }

               }

               if(type.equals("class java.lang.Short")){     

                   Method m = model.getClass().getMethod("get"+name);

                   Short value = (Short) m.invoke(model);

                   if(value != null){

                       System.out.println("attribute value:"+value);                    }

               }       

               if(type.equals("class java.lang.Double")){     

                   Method m = model.getClass().getMethod("get"+name);

                   Double value = (Double) m.invoke(model);

                   if(value != null){                    

                       System.out.println("attribute value:"+value);  

                   }

               }                  

               if(type.equals("class java.lang.Boolean")){

                   Method m = model.getClass().getMethod("get"+name);    

                   Boolean value = (Boolean) m.invoke(model);

                   if(value != null){                      

                       System.out.println("attribute value:"+value);

                   }

               }

               if(type.equals("class java.util.Date")){

                   Method m = model.getClass().getMethod("get"+name);                    

                   Date value = (Date) m.invoke(model);

                   if(value != null){

                       System.out.println("attribute value:"+value.toLocaleString());

                   }

               }                

           }

           return (T) model;

   }

 

 

 

 

}

 

分享到:
评论

相关推荐

    java反射机制学习(三):通过反射获取实体类的属性、方法、接口和父类信息

    在本教程中,我们将深入探讨如何通过反射获取实体类的属性、方法、接口以及父类信息。 首先,让我们从`Person.java`这个实体类开始。在Java中,实体类通常用于表示数据对象,比如一个用户或者订单。实体类可能包含...

    Java 通过反射给实体类赋值操作

    Java 通过反射给实体类赋值操作是 Java programming 语言中的一种常用技术,通过使用 Java 的反射机制,可以将请求中的参数赋值给实体类对象,从而简化了数据的处理过程。下面是该技术的详细说明: 什么是 Java ...

    java 通过反射获取类上注解,方法上注解,注解里的值及方法参数

    在Java编程中,注解...这个示例涵盖了Java中使用反射获取注解的基本操作,包括类、方法、注解的值和方法参数。通过实践这个例子,你可以更好地理解和掌握这些概念,从而在实际项目中更有效地利用注解和反射。

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

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

    将Map转换成Java实体

    在Java编程中,Map对象和Java实体类是两种常见的数据结构。Map对象通常用于存储键值对,而实体类则代表数据库中的记录或者业务逻辑中的对象。在实际开发中,我们有时需要将Map对象的数据转换为Java实体对象,以便...

    基于java8新特性+反射机制实现list不同实体类互转.zip

    反射机制是Java的另一个强大特性,它允许程序在运行时动态地获取类的信息(如类名、字段、方法等)并进行操作。在这个实现中,反射可能用于创建目标实体类的实例,设置属性值以及调用构造函数。通过反射,我们可以...

    JAVA通过实体生成数据库表

    这些工具可以解析实体类,利用反射获取字段信息,然后根据配置生成对应的DDL(Data Definition Language)语句,比如`CREATE TABLE`,进而创建数据库表。在执行这些DDL语句后,数据库中就会出现与实体类匹配的表。 ...

    java反射机制应用

    Java反射机制是一种强大的工具,它使得程序能够在运行时动态地获取类的信息,并进行各种操作。通过上述例子可以看出,反射机制在实际项目开发中有着广泛的应用,包括但不限于表单数据填充、动态工厂模式、大量字段的...

    java反射机制学习(四):通过反射执行方法、操作属性、操作数组中的数据

    Java反射机制是Java编程语言中一个强大的特性,它允许运行时动态地获取类的信息并进行操作,如创建对象、调用方法、访问属性以及处理数组等。在本篇讲解中,我们将深入理解如何通过反射来执行方法、操作属性以及处理...

    利用JAVA反射,读取数据库表名,自动生成对应实体类的操作

    利用JAVA反射读取数据库表名自动生成对应实体类的操作 标题分析: 该标题主要介绍了利用JAVA反射机制,读取数据库表名,并自动生成对应的实体类的操作。这种操作可以自动根据表名生成实体类,具有很好的参考价值和...

    java反射深入剖析(推荐)

    Java反射的应用场景广泛,如框架开发(如Spring、Hibernate)、动态代理、代码生成工具(如JPA的实体生成)、序列化/反序列化、测试工具等。然而,反射也会带来性能损失,因为它是运行时的动态操作,且可能破坏封装...

    Java反射泛型,实现数据库的动态增删改查等功能

    具体实现时,我们可以为每个数据库操作创建一个泛型方法,使用反射获取实体类的字段,根据字段生成对应的SQL语句片段。比如在插入操作中,我们可以遍历`T`的所有字段,构建一个`INSERT INTO table_name (field1, ...

    JAVA反射实现数据层框架

    1. **获取类信息**:使用`Class.forName("全限定类名")`可以获取到任何类的`Class`对象,从而得到类的元数据,如类名、包名、父类、接口、注解等。 2. **创建对象**:通过`Class`对象的`newInstance()`方法,可以无...

    java从数据库表反射出实体类,自动生成实体类

    根据提供的文件信息,我们可以深入探讨如何使用Java编程语言来实现从数据库表中自动反射并生成实体类的功能。这种技术在实际开发中非常有用,尤其是在快速搭建项目基础结构时,能够大大减少手动编码的工作量。 ### ...

    JAVA反射机制

    ### JAVA反射机制详解 #### 一、JAVA反射机制概述 **反射**是在1982年由Smith首次提出的概念,指的是程序有能力访问、检测并修改其自身的状态或行为。这一概念一经提出,便迅速引起了计算机科学领域的关注,并在多...

    java反射以及复制一个bean的值到另一个bean中。

    首先,让我们了解如何使用反射获取类的信息。假设我们有一个名为 `Person` 的类: ```java public class Person { private String name; private int age; // 构造器、getters 和 setters... } ``` 要获取 `...

    任意XML转实体类 实体类 转XML 方法 JAVA

    总结一下,XML转实体类和实体类转XML涉及的主要知识点有:Java反射API、XML解析(DOM、SAX、StAX、JAXB),以及对象的序列化和反序列化。在实际开发中,我们需要根据项目需求选择合适的工具和方法,确保数据的准确...

    java反射源码示例+注释详细

    Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射API提供了对类、接口、字段和方法等元数据的访问,使得我们可以“看穿”类的封装性,实现一些在编译...

    java注解、java反射机制 jdbc 封装

    接着,我们来看Java反射机制。反射允许程序在运行时检查类、接口、字段和方法的信息,甚至可以动态调用方法和访问字段。在JDBC封装中,反射非常有用,因为它允许在运行时创建和执行SQL语句,而不必在代码中硬编码...

    java反射与EJBjava反射与EJBjava反射与EJBjava反射与EJBjava反射与EJB

    Java反射和EJB(Enterprise JavaBeans)是Java开发中的两个重要概念,它们分别涉及程序运行时的动态性以及企业级应用的组件模型。 Java反射机制是Java语言提供的一种能力,允许程序在运行时检查和操作类、接口、...

Global site tag (gtag.js) - Google Analytics