USER VO
package com.hcwy.test.bean;
import java.util.Date;
public class User {
private Integer userId;
private String userName;
private String password;
private String name;
private String email;
private Date registTime;
private String userRole;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getRegistTime() {
return registTime;
}
public void setRegistTime(Date registTime) {
this.registTime = registTime;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserRole() {
return userRole;
}
public void setUserRole(String userRole) {
this.userRole = userRole;
}
}
Main
package com.hcwy.test.oper;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Date;
import com.hcwy.test.bean.User;
public class Operate {
/**
* @param args
*/
public static void main(String[] args) {
int qq=0;
User user=new User();
user.setEmail("1");
user.setName("11");
user.setPassword("111");
user.setRegistTime(new Date());
user.setUserId(1);
user.setUserName("aa");
user.setUserRole("aa");
Object u=user;
Class c=u.getClass();
Field f[]= c.getDeclaredFields();
for (int i = 0; i < f.length; i++) {
// System.out.println(f[i].getName());
String name="get"+f[i].getName().substring(0,1).toUpperCase()+f[i].getName().substring(1);
System.out.println(name);
try {
Method m=c.getMethod(name, null);
Object obj=m.invoke(u, null);
if (obj instanceof String) {
qq++;//JDBC操作
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
System.out.println("共有"+qq+"个String");
}
}
分享到:
相关推荐
标题"反射机制反射Dao"暗示我们将探讨如何使用反射与数据访问对象(DAO)模式相结合。 反射机制允许程序在运行时动态地获取类的信息(如类名、方法名、参数类型等),并能动态调用方法或访问和修改对象的属性。这种...
在处理实体类与数据库表字段映射时,这非常有用。 4. **泛型处理**:反射可以处理泛型,即使在编译时类型信息丢失的情况下,我们依然可以通过反射获取到运行时的泛型类型,从而实现更精确的数据转换。 5. **注解...
在Java编程中,动态查询和反射是两种强大的技术,它们在开发高级应用时常常结合使用。动态查询允许我们在运行时构建SQL语句,而反射则让我们可以在运行时检查和操作类的方法和属性,即使在编写代码时我们并不知道...
在Java编程中,反射(Reflection)和泛型(Generics)是两个非常重要的特性,它们分别提供了对运行时类型信息的动态访问以及类型安全的代码编写能力。在本主题中,我们将深入探讨如何通过反射获取泛型参数,并利用...
Java的反射机制是Java语言的一项强大特性,它允许我们在运行时检查类的内部结构,创建和操作类的对象,以及调用私有方法和修改私有属性。这一机制使得Java能够具备动态编程的能力,增强了代码的灵活性和可扩展性。 ...
2. 动态调用方法:在运行时根据需求调用对象的方法,这在处理动态行为或插件系统时非常有用。 3. 数据绑定:在表现层,反射可以用来自动将表单数据绑定到业务对象的属性,简化数据处理。 结合工厂模式和反射,...
反射是Java提供的一种动态类型功能,这对于创建灵活、可扩展的代码非常有用,尤其是在处理数据库操作时。 在Java中,我们可以使用反射来实现数据库操作,从而提高代码的复用性和灵活性。通常,我们首先会使用`Class...
在上述代码中,我们看到了如何利用反射来操作未知类型的对象,这在创建通用功能或者框架开发时非常有用。下面我们将深入探讨Java反射的相关知识点。 1. 获取类的信息: `Class c=obj.getClass();` 这一行代码获取...
1. 反射(Reflection):Java反射机制允许程序在运行时动态地获取类的信息(如类名、方法名、参数类型等)并调用其方法。通过`Class`类,我们可以实例化未知类型的对象,调用私有方法,访问私有字段,以及检查类的...
这种能力对于开发框架和库尤其有用,因为它提供了灵活性,可以在运行时根据配置文件或其他输入动态加载和使用不同的类。 #### 完全限定名(Fully Qualified Class Name) 一个类的完全限定名是指包含包名和类名的...
在这个特定的场景中,`BaseDao` 类使用Java反射来创建通用的数据库查询方法,实现了对数据库的动态操作,从而避免了为每个表或查询编写单独的DAO(数据访问对象)方法。 1. **反射的基本概念**: - `java.lang....
在BaseDaoImpl中,反射可能用于动态地调用实体类的方法,例如获取属性值,这在实现通用的CRUD操作时非常有用。例如,通过反射可以构建SQL语句,将实体对象的属性映射到SQL的WHERE子句中。 例如,以下是一个简化的...
"反射DAO.rar"这个文件名暗示了可能包含有关Java反射和数据访问对象(DAO)模式的相关资料。在Java编程中,反射是一种强大的机制,允许程序在运行时检查和修改其自身的行为。通过反射,开发者可以动态地创建对象、...
反射是一种强大的机制,允许程序在运行时检查自身结构和行为,这对于动态操作数据库非常有用。 - **构造函数**: 获取类的构造函数。 - **方法**: 获取类的方法。 - **属性**: 获取类的属性。 #### 十八、数据库...
`GenericUtil`类中的方法可以帮助这些DAO类动态获取其实体类型,这在动态创建查询、反射调用方法或进行类型转换时尤为重要。 #### 核心方法解读:`getClassOfGenricTypeParam` `GenericUtil`类中定义的`...
泛型和反射的结合可以实现动态类型检查和实例化,这对于构建高度灵活和可扩展的系统非常有用。 例如,一个通用的服务层可以使用泛型接口定义服务方法,然后通过反射动态地调用这些方法,根据传入的类型参数来处理...
这样的工具在开发过程中非常有用,因为它可以减少手动编写数据访问对象(DAO)和实体类的工作量,提高开发效率。 描述中提到,这个DEMO是使用Visual Studio 2003开发的,这是一款早期的集成开发环境(IDE),用于C#...
这在处理复杂查询或动态过滤时特别有用,避免了大量硬编码的字符串拼接。 4. **性能与安全性**: 动态SQL可以提高代码的灵活性,但也有性能考虑。因为每次方法调用都可能导致不同的SQL生成,这可能会影响数据库的...