`
chengzhi
  • 浏览: 112250 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

遍历实体类

    博客分类:
  • java
 
阅读更多

 

这个方法使用到了java.lang.reflect包的Field类,Method类。

 

    此方法遍历实体类所有属性,对于常用的java包装类类型和java.util.Date,输出其属性值,如果有其它类型,则需自己扩展。

 

public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{

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

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

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

 

                 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);

                    }

                }

                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);

                    }

                }

                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());

                    }

                }                

            }

    }

==============================

 

Method类invoke方法的使用 

 

/** 

* Method的使用方法 

* @author Callan 

*/ 

public class Names { 

public String firstName = "Callan"; 

public String lastName = "Wang"; 

 

public String getFullName(){ 

  return firstName + " " + lastName; 

 

public String getFullName(String firstName,String lastName){ 

  return firstName + " " + lastName; 

 

import java.lang.reflect.InvocationTargetException; 

import java.lang.reflect.Method; 

 

/** 

* Method的使用方法 

* @author Callan 

*/ 

public class Test { 

 

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

 

  Names methods = new Names(); 

 

  // 调用getFullName()方法 

  Method method1 = methods.getClass().getMethod("getFullName"); 

  Object obj1 = method1.invoke(methods, null); 

  System.out.println(obj1); 

 

  // 调用getFullName(String firstName,String lastName)方法 

  Method method2 = methods.getClass().getMethod("getFullName", new Class[]{String.class,String.class});//方法带有两个String类型的参数 

  // invoke(从中调用基础方法的对象,用于方法调用的参数) 

  Object obj2 = method2.invoke(methods, new String[]{"Callan","Wang"}); 

  System.out.println(obj2); 


 

 

分享到:
评论

相关推荐

    java反射遍历实体类属性和类型,并赋值和获取值的简单方法

    这里我们将深入探讨如何使用Java反射遍历实体类的属性和类型,并进行赋值和获取值的操作。 首先,我们需要理解Java反射的基本概念。`java.lang.reflect`包提供了几个核心类和接口,如`Class`、`Field`、`Method`和`...

    C#实现实体类与字符串互相转换的方法

    这个过程通常涉及到遍历实体类的所有公共属性(Public Properties),并将属性名和对应的属性值拼接成一个字符串。以下是一个简单的示例: ```csharp public class PackReflectionEntity { public static string ...

    一次获得界面所有实体类的数据

    在`ParamUtils`类中,反射被用来遍历实体类的所有方法,寻找setter方法,并根据请求参数的名称和类型调用相应的setter方法。这使得我们无需为每个实体类手动编写解析代码,从而大大提高了开发效率。 #### ...

    将Map转换成Java实体

    接着,遍历实体类的所有声明字段(不包括继承的字段),设置每个字段的值为Map中对应的键值。注意,由于Java的封装特性,我们需要通过`setAccessible(true)`使私有属性可访问。 这个方法虽然简单,但已经能够满足...

    C#代码生成器(包括T-sql语句,和实体类代码)

    利用反射技术,代码生成器可以遍历实体类的所有公共属性,根据这些属性生成对应的INSERT、UPDATE、SELECT等T-SQL语句。这极大地简化了数据库操作的编码工作,同时降低了出错的可能性。 反射是.NET框架提供的一种...

    C#编程获取实体类属性名和值的方法示例

    遍历获得一个实体类的所有属性名,以及该类的所有属性的值 //先定义一个类: public class User {  public string name { get; set; }  public string gender { get; set; }  public string age { get; set; } } ...

    Java集合Set、List、Map的遍历方法

    Java集合框架提供了多种接口和类,如Set、List和Map,它们各自有不同的特性和用途。本文将详细介绍如何遍历这些集合类型的实例。 首先,我们来看Set集合。Set接口代表不包含重复元素的集合,它的遍历方法主要有两种...

    C#代码自动生成

    在“C#代码自动生成”中,反射被用来遍历实体类的所有公共属性,这一步骤至关重要,因为这些属性通常对应着数据库表的字段。 接下来,我们探讨DLL动态加载技术。DLL(动态链接库)是共享代码的机制,多个程序可以...

    用C#在NX上写的一个小程序:遍历part文件得到实体及实体上的特征

    4. **遍历实体上的特征**:在NX中,实体是构成零件的基本几何形状,如平面、曲面或实体体。特征则是添加到实体上的设计元素,如孔、槽、倒角等。遍历实体上的特征,可以进一步获取每个特征的详细信息,如类型、参数...

    C#数据实体类中如何给属性赋值

    ### C# 数据实体类中如何给属性赋值 在C#开发中,处理数据库查询结果时,经常需要将查询结果映射到实体类中。本文将详细介绍如何在C#的数据实体类中为属性赋值,特别是当从数据库中取出的是一个`DataSet`对象时。 ...

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

    将XML数据转换为Java实体类(Bean)以及将实体类转换回XML是两个重要的操作,这对于数据的序列化和反序列化至关重要。下面将详细解释这两个过程以及涉及的相关知识点。 首先,XML转实体类的过程通常涉及到Java的...

    把实体类数组转换为DataTable C#

    5. 将实体数组转换为DataTable:最后,遍历实体数组并将每个实体的属性值填充到DataTable的新行中: ```csharp foreach (var entity in entities) { var row = dataTable.NewRow(); foreach (var property in ...

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

    当我们处理业务数据时,经常需要在不同实体类的列表之间进行转换,以满足不同的业务需求。这个压缩包文件“基于java8新特性+反射机制实现list不同实体类互转.zip”提供了一种解决方案,它利用了Java 8的新特性和反射...

    codesmith生成实体类简单模板

    《使用Codesmith生成C#实体类的简易模板详解》 在软件开发过程中,尤其是在与数据库交互的业务逻辑层,实体类的创建是一项繁琐且重复的工作。 Codesmith是一款强大的代码生成工具,它允许开发者通过定制模板来自动...

    C#实现根据实体类自动创建数据库表

    2. **解析特性**:在程序中,我们需要遍历实体类的所有属性,检查它们是否带有`DbKey`特性。这可以通过反射(Reflection)来实现。例如,`getDbKeyFields&lt;T&gt;`方法就是获取所有带有`DbKey`特性的属性: ```csharp ...

    简单实体类和xml文件的相互转换方法

    在`writeXML`方法中,通过循环遍历实体类列表,为每个对象创建一个XML元素,然后添加到根元素下。`writeXml(Element root, Object obj)`方法利用反射获取对象的所有字段,并创建对应的XML元素。`document....

    MapUtils工具类,轻松转换map数据与实体类

    通常,该类会使用反射机制遍历`Map`中的每个键值对,根据键来找到对应实体类的setter方法,并调用它设置值。为了确保安全,工具类可能还会包含一些错误处理机制,如检查键是否存在,值类型是否匹配等。 在实际开发...

    asp.net实体类生成器

    ASP.NET实体类生成器是一个基于C#开发的小型实用程序,设计用于自动化创建实体类的过程。在软件开发中,实体类通常被用来作为数据库表的映射,它们封装了数据并提供与数据库交互的方法。实体类是面向对象编程中一个...

    导出excel注解方式

    在上述代码中,我们首先创建了工作簿和工作表,然后遍历实体类的字段,通过反射获取注解信息,创建表头。接着,我们遍历数据列表,为每一行填充数据。最后,将工作簿写入到指定的文件中。 使用这个工具类,你可以...

Global site tag (gtag.js) - Google Analytics