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;
}
}
相关推荐
在本教程中,我们将深入探讨如何通过反射获取实体类的属性、方法、接口以及父类信息。 首先,让我们从`Person.java`这个实体类开始。在Java中,实体类通常用于表示数据对象,比如一个用户或者订单。实体类可能包含...
Java 通过反射给实体类赋值操作是 Java programming 语言中的一种常用技术,通过使用 Java 的反射机制,可以将请求中的参数赋值给实体类对象,从而简化了数据的处理过程。下面是该技术的详细说明: 什么是 Java ...
在Java编程中,注解...这个示例涵盖了Java中使用反射获取注解的基本操作,包括类、方法、注解的值和方法参数。通过实践这个例子,你可以更好地理解和掌握这些概念,从而在实际项目中更有效地利用注解和反射。
在深入探讨如何通过反射获取实体类的字段和值之前,我们先来理解一下反射是什么以及它在.NET框架中的作用。反射是一种强大的编程技术,允许运行时动态地获取类型的信息并操作对象。它提供了对程序集、模块、类型、...
在Java编程中,Map对象和Java实体类是两种常见的数据结构。Map对象通常用于存储键值对,而实体类则代表数据库中的记录或者业务逻辑中的对象。在实际开发中,我们有时需要将Map对象的数据转换为Java实体对象,以便...
反射机制是Java的另一个强大特性,它允许程序在运行时动态地获取类的信息(如类名、字段、方法等)并进行操作。在这个实现中,反射可能用于创建目标实体类的实例,设置属性值以及调用构造函数。通过反射,我们可以...
这些工具可以解析实体类,利用反射获取字段信息,然后根据配置生成对应的DDL(Data Definition Language)语句,比如`CREATE TABLE`,进而创建数据库表。在执行这些DDL语句后,数据库中就会出现与实体类匹配的表。 ...
Java反射机制是一种强大的工具,它使得程序能够在运行时动态地获取类的信息,并进行各种操作。通过上述例子可以看出,反射机制在实际项目开发中有着广泛的应用,包括但不限于表单数据填充、动态工厂模式、大量字段的...
Java反射机制是Java编程语言中一个强大的特性,它允许运行时动态地获取类的信息并进行操作,如创建对象、调用方法、访问属性以及处理数组等。在本篇讲解中,我们将深入理解如何通过反射来执行方法、操作属性以及处理...
利用JAVA反射读取数据库表名自动生成对应实体类的操作 标题分析: 该标题主要介绍了利用JAVA反射机制,读取数据库表名,并自动生成对应的实体类的操作。这种操作可以自动根据表名生成实体类,具有很好的参考价值和...
Java反射的应用场景广泛,如框架开发(如Spring、Hibernate)、动态代理、代码生成工具(如JPA的实体生成)、序列化/反序列化、测试工具等。然而,反射也会带来性能损失,因为它是运行时的动态操作,且可能破坏封装...
具体实现时,我们可以为每个数据库操作创建一个泛型方法,使用反射获取实体类的字段,根据字段生成对应的SQL语句片段。比如在插入操作中,我们可以遍历`T`的所有字段,构建一个`INSERT INTO table_name (field1, ...
1. **获取类信息**:使用`Class.forName("全限定类名")`可以获取到任何类的`Class`对象,从而得到类的元数据,如类名、包名、父类、接口、注解等。 2. **创建对象**:通过`Class`对象的`newInstance()`方法,可以无...
根据提供的文件信息,我们可以深入探讨如何使用Java编程语言来实现从数据库表中自动反射并生成实体类的功能。这种技术在实际开发中非常有用,尤其是在快速搭建项目基础结构时,能够大大减少手动编码的工作量。 ### ...
### JAVA反射机制详解 #### 一、JAVA反射机制概述 **反射**是在1982年由Smith首次提出的概念,指的是程序有能力访问、检测并修改其自身的状态或行为。这一概念一经提出,便迅速引起了计算机科学领域的关注,并在多...
首先,让我们了解如何使用反射获取类的信息。假设我们有一个名为 `Person` 的类: ```java public class Person { private String name; private int age; // 构造器、getters 和 setters... } ``` 要获取 `...
总结一下,XML转实体类和实体类转XML涉及的主要知识点有:Java反射API、XML解析(DOM、SAX、StAX、JAXB),以及对象的序列化和反序列化。在实际开发中,我们需要根据项目需求选择合适的工具和方法,确保数据的准确...
Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射API提供了对类、接口、字段和方法等元数据的访问,使得我们可以“看穿”类的封装性,实现一些在编译...
接着,我们来看Java反射机制。反射允许程序在运行时检查类、接口、字段和方法的信息,甚至可以动态调用方法和访问字段。在JDBC封装中,反射非常有用,因为它允许在运行时创建和执行SQL语句,而不必在代码中硬编码...
Java反射和EJB(Enterprise JavaBeans)是Java开发中的两个重要概念,它们分别涉及程序运行时的动态性以及企业级应用的组件模型。 Java反射机制是Java语言提供的一种能力,允许程序在运行时检查和操作类、接口、...