/**
* 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;
}
分享到:
相关推荐
在Java中,Bean通常是指符合JavaBeans规范的Java类,它们是可重用的组件,具有无参数的构造函数、`get`和`set`方法(用于访问属性)以及可以序列化的特性。JavaBeans允许开发者在运行时通过反射机制来创建、配置和...
- **访问和修改属性值**:使用`Field`的`get(Object obj)`和`set(Object obj, Object value)`方法可以读取和设置Bean实例的属性值。 - **遍历getter和setter**:`Class.getMethod(String name, Class<?>... ...
Java反射 API 主要包含在 `java.lang.reflect` 包中,包括 `Class` 类、`Constructor` 类、`Method` 类和 `Field` 类等。 首先,让我们了解如何使用反射获取类的信息。假设我们有一个名为 `Person` 的类: ```java...
在给定的标题“通过java反射实现map与bean之间互转”中,我们要探讨的是如何利用Java反射机制将Map对象转换为Java Bean对象,以及反过来,将Java Bean对象转换为Map对象。这个过程在数据处理和序列化中非常常见。 ...
这段代码通过遍历Java Bean类的所有getter方法,获取属性名和对应的值,并存入Map中。 反过来,从Map转换为Java Bean的过程可以使用Java的构造器或者无参构造器结合setter方法完成。以下是一个基本的实现: ```...
这段代码利用了反射机制,找到Java Bean类中的setter方法,根据JSON中的键值对调用setter方法设置属性值。 另一种常见的方式是使用Gson库,它的使用更加简洁。首先,引入Gson库,然后使用`Gson.fromJson()`方法进行...
`Field`对象提供了`set()`和`get()`方法,分别用于设置和获取字段的值。 3. **调用方法**:通过`Class`对象的`getMethods()`或`getDeclaredMethods()`方法,我们可以获取类的公共方法或所有方法。`Method`对象的`...
3. **访问字段**:通过`Class`对象的`getField()`或`getDeclaredField()`方法可以获取类的公共字段或所有字段,然后调用`set()`或`get()`方法对字段进行读写操作。注意,访问私有字段可能需要设置访问权限。 4. **...
我们可以通过`Class.forName()`或对象的`getClass()`方法获取`Class`对象。 3. **获取类信息** - `getName()`: 返回全限定类名(包括包名)。 - `getSimpleName()`: 返回类的简单名称(不包含包名)。 - `...
4. `Field` 类:代表类的字段,可以用来访问或修改字段值,如`get()`和`set()`方法。 接下来,我们讨论Java代理。动态代理机制允许我们在运行时创建一个实现一组给定接口的新类。这在实现AOP(面向切面编程)和IOC...
同样,可以通过`Field`对象的`get()`和`set()`方法来获取和设置私有属性的值。 5. **动态创建代理类** 使用`Proxy`类,可以动态地生成实现了指定接口的代理类实例,这在处理回调或事件驱动的场景中非常有用。 6. ...
* 通过 Field 对象的 get 和 set 方法访问属性 * 通过 Method 对象的 invoke 方法调用方法 ### Java 反射机制的注意事项 * 安全性:Java 反射机制可以访问私有属性和私有方法,可能会导致安全问题,因此需要小心...
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性在处理现实业务问题时尤其有用,例如实现插件化、元编程、动态代理等...
- 访问属性:使用`Field field = clazz.getField("fieldName")`获取公共字段,`field.set(object, value)`设置对象的字段值,`field.get(object)`获取对象的字段值。 - 调用方法:使用`Method method = clazz....
### Java反射机制简介 #### 一、什么是Java反射机制? Java反射机制是Java语言提供的一种在运行时访问类和对象信息的能力。通过反射,我们可以在程序运行时动态地获取类的信息(如类名、方法、构造函数等)并操作...
Java反射(Reflect)是Java语言中的一个重要特性,它允许运行时的Java程序访问、操作类、接口、字段和方法的信息,甚至动态调用方法。在Java编程中,反射提供了强大的能力,可以用来实现一些高级功能,如元编程、...
### Java反射机制详解 #### 一、Java反射机制概述 Java反射机制是Java语言中一个重要的特性,它赋予了Java程序动态操作的能力。通过反射,Java程序可以在运行时获取类的信息,并且可以创建和访问对象及其成员(如...
5. **访问字段**:类似地,我们可以使用`getField()`或`getDeclaredField()`获取Field对象,然后使用`set()`和`get()`来读写字段值。但请注意,直接操作字段可能破坏封装性。 6. **setter和getter方法**:Java Bean...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查并操作类、接口、字段和方法的信息,从而实现动态类型的功能。通过反射,我们可以在代码执行期间动态地创建对象、调用方法、访问和修改字段,这...
一旦获得了`Class`对象,就可以通过其提供的方法获取类的成员信息,包括字段、方法、构造器等。 - **获取方法**:`getDeclaredMethods()`返回所有声明的方法数组。 - **获取字段**:`getDeclaredFields()`返回所有...