package org.fanzone.lang.reflect;
import java.io.Serializable;
import java.lang.reflect.Field;
/**
* Title: JavaTech<br>
* Description: Change the value of the private member of a specified class.<br>
* Copyright: Copyright (c) 2011 <br>
* Create DateTime: Jul 12, 2011 2:23:05 PM <br>
* @author wangmeng
*/
public class ChangePrivatePropertyValue {
/**
* A inner class as a bean.
*/
class Person implements Serializable{
private static final long serialVersionUID = 8875435845244822261L;
private String corporeity;
private String spirit;
public String getCorporeity() {
return corporeity;
}
public void setCorporeity(String corporeity) {
this.corporeity = corporeity;
}
public String getSpirit() {
return spirit;
}
public void setSpirit(String spirit) {
this.spirit = spirit;
}
}
/**
* Change the value of the specified property.
* @param obj
* @param property
* @param value
*/
public static void changeValue(Object obj, String property, Object value){
Field field = null;
try {
//Get the specified declared field.
field = obj.getClass().getDeclaredField(property);
//Open the accessible socket.
field.setAccessible(true);
//Inject the new value.
field.set(obj, value);
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
Person meng = new ChangePrivatePropertyValue().new Person();
meng.setCorporeity("man");
meng.setSpirit("woman");
System.out.println("Meng is a person who owns " + meng.getCorporeity() + " corporeity and " + meng.getSpirit() + " spirit.");
changeValue(meng, "spirit", "man");
System.out.println("But now, he get the " + meng.getSpirit() + " spirit at last...(^_^)");
}
}
分享到:
相关推荐
标题“Java反射机制修改私有成员变量的实现_Reflection”着重讲述了如何利用反射来修改私有成员变量的值。在Java中,私有成员变量通常被视为封装的一部分,不被外部类直接访问。然而,通过反射,我们可以绕过这种...
本篇文章将详细探讨如何利用反射来给对象的属性赋值,以及这个过程中的关键知识点。 一、反射的概念 反射是指在程序运行期间获取并操作类、接口、字段和方法等元数据的能力。通过反射,我们可以在运行时动态地创建...
尽管可以利用反射访问私有成员,但这应被视为一种特殊情况下的权宜之计,而不是常规编程实践。在单元测试中,适度使用反射可以帮助验证私有方法的行为,但也要注意保持测试的独立性和稳定性。在设计和实现代码时,应...
"Java利用反射获取object的属性和值代码示例" Java中的反射机制可以让我们在程序运行时动态地获取和修改对象的属性和值,这个技术非常有用,尤其是在一些框架和库的实现中。在这篇文章中,我们将通过一个实用的例子...
本示例中的"实体对象属性动态化(私有属性来源为map)"是一个具体的应用场景,它利用Map来存储实体类的私有属性,从而实现属性的动态添加、修改和访问。下面我们将详细探讨这一技术。 1. **Map接口**:在Java中,Map...
在Android开发中,反射常用于访问私有成员、调用私有方法或改变私有状态,以实现对系统组件的定制。 在"MediaController反射修改"这个主题中,开发者可能遇到以下关键知识点: 1. **MediaController类的理解**:...
4. 设置属性值:如果属性是可写的,可以使用`SetValue()`方法来改变它的值。 ```vbnet Dim newValue As Object = New ValueDataType() myProperty.SetValue(myInstance, newValue) ``` 请注意,`GetValue()`和`...
Java反射机制是Java语言提供的一种强大功能,它允许我们在运行时检查类、接口、字段...在上述示例中,我们展示了如何利用反射来实现计算器的动态调用和修改私有学生对象的属性,这些都展示了反射机制的灵活性和实用性。
在给定的场景中,我们利用反射机制实现了动态调用计算器的加法和减法函数,并修改了学生对象的私有数据成员。下面将详细讲解这些知识点。 首先,让我们关注`Calculator`类中的加法和减法函数。假设`Calculator`类有...
同样,我们可以使用反射API中的`ReflectionClass`和`ReflectionProperty`来访问和修改私有属性的值。例如: ```php class TestSample { public function testPrivateProperty() { $reflectedClass = new ...
通过这些类,我们可以动态地获取类的信息,甚至在运行时调用私有方法和修改私有属性。 在给定的例子中,我们看到一个名为`GetModelNameAndType`的类,它有一个静态方法`testReflect`,该方法接受一个对象`model`...
- **访问和修改属性值**:使用`Field`的`get(Object obj)`和`set(Object obj, Object value)`方法可以读取和设置Bean实例的属性值。 - **遍历getter和setter**:`Class.getMethod(String name, Class<?>... ...
在本例程中,我们将深入探讨如何利用反射机制来动态地修改对象的私有属性值。 首先,我们需要了解反射的核心类`java.lang.Class`,它是Java类的运行时表示。通过`Class`对象,我们可以获取到类的结构信息,如类名、...
2. 调用私有方法和访问私有字段:通过反射,开发者可以绕过封装性,直接访问和修改私有成员,尽管这通常不推荐,但在某些特殊场景下可能是必要的。 3. 动态创建对象:利用`Class.forName()`方法,可以基于字符串形式...
`Field`对象的`get()`和`set()`方法可以读取和修改对象的属性值,包括私有属性。 学习Java反射机制的重要性体现在以下几个方面: 1. 动态类型:反射机制允许我们在运行时检查对象的类型,这对于编写通用代码和处理...
一旦我们有了`Class`对象,我们就可以利用反射来创建对象,调用方法和访问属性。例如,我们可以使用`newInstance()`方法创建一个新对象,但前提是没有参数的构造函数: ```java Person person = (Person) person...
在本“Java反射经典实例”中,我们将深入探讨这个主题,了解如何利用反射来访问和修改私有属性以及调用私有方法。 1. **反射的概念与用途** - 反射机制是在运行时分析类的能力,它允许我们获取类的信息(如类名、...
- 框架开发:Spring框架利用反射进行依赖注入。 - 描述性编程:如ORM框架Hibernate通过反射操作数据库。 - 动态代理:JDK动态代理机制基于反射实现。 - 测试工具:JUnit等测试框架使用反射来调用私有方法。 - ...
在这个特定的场景中,"HardwareInformation_反射_" 提到的是利用反射来获取系统硬件信息的过程。在Java、C#等面向对象的编程语言中,反射通常被用来动态地访问和修改程序的行为。 反射的工作原理是通过类的Class...
- 数据库操作框架:如Hibernate、MyBatis等,利用反射来实例化Java对象,设置属性,调用方法,实现与数据库的交互。 - 字符串操作框架:如Apache Commons BeanUtils库,使用反射实现对象属性的复制。 - 测试工具...