/**
* java反射bean的get方法
*
* @param objectClass
* @param fieldName
* @return
*/
@SuppressWarnings("unchecked")
public static Method getGetMethod(Class objectClass, String fieldName) {
StringBuffer sb = new StringBuffer();
sb.append("get");
sb.append(fieldName.substring(0, 1).toUpperCase());
sb.append(fieldName.substring(1));
try {
return objectClass.getMethod(sb.toString());
} catch (Exception e) {
}
return null;
}
/**
* java反射bean的set方法
*
* @param objectClass
* @param fieldName
* @return
*/
@SuppressWarnings("unchecked")
public static Method getSetMethod(Class objectClass, String fieldName) {
try {
Class[] parameterTypes = new Class[1];
Field field = objectClass.getDeclaredField(fieldName);
parameterTypes[0] = field.getType();
StringBuffer sb = new StringBuffer();
sb.append("set");
sb.append(fieldName.substring(0, 1).toUpperCase());
sb.append(fieldName.substring(1));
Method method = objectClass.getMethod(sb.toString(), parameterTypes);
return method;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 执行set方法
*
* @param o执行对象
* @param fieldName属性
* @param value值
*/
public static void invokeSet(Object o, String fieldName, Object value) {
Method method = getSetMethod(o.getClass(), fieldName);
try {
method.invoke(o, new Object[] { value });
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 执行get方法
*
* @param o执行对象
* @param fieldName属性
*/
public static Object invokeGet(Object o, String fieldName) {
Method method = getGetMethod(o.getClass(), fieldName);
try {
return method.invoke(o, new Object[0]);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
分享到:
相关推荐
通过`DYNC_Object.java`的示例,我们可以学习如何利用反射来实现bean的`set`和`get`操作,这为我们提供了更大的程序设计自由度,使得代码能够适应不断变化的需求。理解并熟练掌握这一技术,对于提升Java开发能力非常...
`mapToBean`方法接受一个Map和目标Bean的Class对象,首先检查参数是否有效,然后创建一个新的Bean实例,遍历Map中的每一个键值对,通过反射找到Bean中对应的Field,设置其可访问,最后调用`set()`方法设置属性值。...
- **访问和修改属性值**:使用`Field`的`get(Object obj)`和`set(Object obj, Object value)`方法可以读取和设置Bean实例的属性值。 - **遍历getter和setter**:`Class.getMethod(String name, Class<?>... ...
在Java编程中,反射(Reflection)是一个强大的工具,它允许我们在运行时检查和操作类、接口、字段和方法。通过反射,我们可以动态地创建对象、访问私有成员、调用私有方法,甚至改变对象的行为。Java反射 API 主要...
在给定的标题“通过java反射实现map与bean之间互转”中,我们要探讨的是如何利用Java反射机制将Map对象转换为Java Bean对象,以及反过来,将Java Bean对象转换为Map对象。这个过程在数据处理和序列化中非常常见。 ...
4. `Field` 类:代表类的字段,可以用来访问或修改字段值,如`get()`和`set()`方法。 接下来,我们讨论Java代理。动态代理机制允许我们在运行时创建一个实现一组给定接口的新类。这在实现AOP(面向切面编程)和IOC...
这段代码利用了反射机制,找到Java Bean类中的setter方法,根据JSON中的键值对调用setter方法设置属性值。 另一种常见的方式是使用Gson库,它的使用更加简洁。首先,引入Gson库,然后使用`Gson.fromJson()`方法进行...
转换Java Bean到Map的过程通常是通过反射机制来实现的。以下是一个简单的示例: ```java import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; public class BeanToMapConverter { ...
myBean.getClass().getMethod("set" + key.toString().substring(0, 1).toUpperCase() + key.toString().substring(1), beanMap.get(key).getClass()).invoke(myBean, beanMap.get(key)); } ``` 此外,提供的`...
5. **字段值操作**:`Field`对象提供了`get(Object obj)`和`set(Object obj, Object value)`方法,用于读取和设置指定对象的字段值。确保传入的对象与字段所属的类匹配,否则将抛出异常。 6. **继承关系处理**:...
`Field`对象提供了`set()`和`get()`方法,分别用于设置和获取字段的值。 3. **调用方法**:通过`Class`对象的`getMethods()`或`getDeclaredMethods()`方法,我们可以获取类的公共方法或所有方法。`Method`对象的`...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查并操作类、接口、字段和方法等对象。这种能力使得Java代码能够具备动态性,可以在不知道具体类名的情况下实例化对象,调用方法,访问字段,以及...
3. **访问字段**:通过`Class`对象的`getField()`或`getDeclaredField()`方法可以获取类的公共字段或所有字段,然后调用`set()`或`get()`方法对字段进行读写操作。注意,访问私有字段可能需要设置访问权限。 4. **...
下面我们将深入探讨Java反射的基本概念、重要方法以及如何在实际应用中使用它。 1. **什么是反射?** 反射是指在运行时,程序可以获取类的信息(如类名、属性、方法等),并动态地创建对象和调用方法。这使得Java...
同样,可以通过`Field`对象的`get()`和`set()`方法来获取和设置私有属性的值。 5. **动态创建代理类** 使用`Proxy`类,可以动态地生成实现了指定接口的代理类实例,这在处理回调或事件驱动的场景中非常有用。 6. ...
* 通过 Field 对象的 get 和 set 方法访问属性 * 通过 Method 对象的 invoke 方法调用方法 ### Java 反射机制的注意事项 * 安全性:Java 反射机制可以访问私有属性和私有方法,可能会导致安全问题,因此需要小心...
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性在处理现实业务问题时尤其有用,例如实现插件化、元编程、动态代理等...
- 数据库操作框架:如Hibernate、MyBatis等,利用反射来实例化Java对象,设置属性,调用方法,实现与数据库的交互。 - 字符串操作框架:如Apache Commons BeanUtils库,使用反射实现对象属性的复制。 - 测试工具...
1. **Field类的get()和set()方法**: ```java Field field = MyClass.class.getField("name"); String value = (String) field.get(myInstance); // 获取值 field.set(myInstance, "NewValue"); // 设置值 ``` ...
由于BeanUtils(Spring或Apache Commons)的copyProperties实现是利用反射实现的,它在大量调用时具有比较严重的性能问题。 BeanMapper通过javassist类库实现在运行时直接生成字节码来转换类,在首次生成后,后续...