`
三里小龙
  • 浏览: 86273 次
  • 性别: Icon_minigender_1
  • 来自: 孝感
社区版块
存档分类
最新评论

利用反射改变私有属性的值

    博客分类:
  • Java
阅读更多

 

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...(^_^)");

 

}

}


0
1
分享到:
评论

相关推荐

    Java反射机制修改私有成员变量的实现_Reflection

    标题“Java反射机制修改私有成员变量的实现_Reflection”着重讲述了如何利用反射来修改私有成员变量的值。在Java中,私有成员变量通常被视为封装的一部分,不被外部类直接访问。然而,通过反射,我们可以绕过这种...

    利用反射给属性赋值

    本篇文章将详细探讨如何利用反射来给对象的属性赋值,以及这个过程中的关键知识点。 一、反射的概念 反射是指在程序运行期间获取并操作类、接口、字段和方法等元数据的能力。通过反射,我们可以在运行时动态地创建...

    C#私有成员反射调用类库

    尽管可以利用反射访问私有成员,但这应被视为一种特殊情况下的权宜之计,而不是常规编程实践。在单元测试中,适度使用反射可以帮助验证私有方法的行为,但也要注意保持测试的独立性和稳定性。在设计和实现代码时,应...

    Java利用反射获取object的属性和值代码示例

    "Java利用反射获取object的属性和值代码示例" Java中的反射机制可以让我们在程序运行时动态地获取和修改对象的属性和值,这个技术非常有用,尤其是在一些框架和库的实现中。在这篇文章中,我们将通过一个实用的例子...

    MediaController反射修改

    在Android开发中,反射常用于访问私有成员、调用私有方法或改变私有状态,以实现对系统组件的定制。 在"MediaController反射修改"这个主题中,开发者可能遇到以下关键知识点: 1. **MediaController类的理解**:...

    VB.NET 反射类属性名称

    4. 设置属性值:如果属性是可写的,可以使用`SetValue()`方法来改变它的值。 ```vbnet Dim newValue As Object = New ValueDataType() myProperty.SetValue(myInstance, newValue) ``` 请注意,`GetValue()`和`...

    JAVA反射机制动态调用 计算器对象的加法,减法函数;JAVA反射机制修改一个学生对象 的私有数据成员

    Java反射机制是Java语言提供的一种强大功能,它允许我们在运行时检查类、接口、字段...在上述示例中,我们展示了如何利用反射来实现计算器的动态调用和修改私有学生对象的属性,这些都展示了反射机制的灵活性和实用性。

    Java反射机制的动态调用计算器的加法,减法函数;修改一个学生对象的私有数据成员

    在给定的场景中,我们利用反射机制实现了动态调用计算器的加法和减法函数,并修改了学生对象的私有数据成员。下面将详细讲解这些知识点。 首先,让我们关注`Calculator`类中的加法和减法函数。假设`Calculator`类有...

    PHPUnit测试私有属性和方法功能示例

    同样,我们可以使用反射API中的`ReflectionClass`和`ReflectionProperty`来访问和修改私有属性的值。例如: ```php class TestSample { public function testPrivateProperty() { $reflectedClass = new ...

    java反射遍历实体类属性和类型,并赋值和获取值的简单方法

    通过这些类,我们可以动态地获取类的信息,甚至在运行时调用私有方法和修改私有属性。 在给定的例子中,我们看到一个名为`GetModelNameAndType`的类,它有一个静态方法`testReflect`,该方法接受一个对象`model`...

    Java Bean 遍历和使用注解给Bean的属性添加属性值

    - **访问和修改属性值**:使用`Field`的`get(Object obj)`和`set(Object obj, Object value)`方法可以读取和设置Bean实例的属性值。 - **遍历getter和setter**:`Class.getMethod(String name, Class&lt;?&gt;... ...

    反射机制demo

    在本例程中,我们将深入探讨如何利用反射机制来动态地修改对象的私有属性值。 首先,我们需要了解反射的核心类`java.lang.Class`,它是Java类的运行时表示。通过`Class`对象,我们可以获取到类的结构信息,如类名、...

    java反射机制工具类

    2. 调用私有方法和访问私有字段:通过反射,开发者可以绕过封装性,直接访问和修改私有成员,尽管这通常不推荐,但在某些特殊场景下可能是必要的。 3. 动态创建对象:利用`Class.forName()`方法,可以基于字符串形式...

    pdf反射机制-java

    `Field`对象的`get()`和`set()`方法可以读取和修改对象的属性值,包括私有属性。 学习Java反射机制的重要性体现在以下几个方面: 1. 动态类型:反射机制允许我们在运行时检查对象的类型,这对于编写通用代码和处理...

    Java反射机制,通过对象访问调用类的私有成员或方法

    一旦我们有了`Class`对象,我们就可以利用反射来创建对象,调用方法和访问属性。例如,我们可以使用`newInstance()`方法创建一个新对象,但前提是没有参数的构造函数: ```java Person person = (Person) person...

    java反射经典实例

    在本“Java反射经典实例”中,我们将深入探讨这个主题,了解如何利用反射来访问和修改私有属性以及调用私有方法。 1. **反射的概念与用途** - 反射机制是在运行时分析类的能力,它允许我们获取类的信息(如类名、...

    java反射 java反射 java反射java反射

    - 框架开发:Spring框架利用反射进行依赖注入。 - 描述性编程:如ORM框架Hibernate通过反射操作数据库。 - 动态代理:JDK动态代理机制基于反射实现。 - 测试工具:JUnit等测试框架使用反射来调用私有方法。 - ...

    Java反射示例代码.rar

    - 数据库操作框架:如Hibernate、MyBatis等,利用反射来实例化Java对象,设置属性,调用方法,实现与数据库的交互。 - 字符串操作框架:如Apache Commons BeanUtils库,使用反射实现对象属性的复制。 - 测试工具...

    Java反射机制-侯捷观点

    - **测试工具**:JUnit等测试框架利用反射访问私有方法或属性进行测试。 - **插件系统**:动态加载和使用未知的插件模块。 然而,反射也带来了一些潜在的问题: - **性能损失**:反射操作通常比直接的Java代码执行...

    android系统java反射机制详解

    2. 操作私有成员:有时我们需要访问或修改私有成员,反射提供了解决方案。 3. 第三方库适配:当第三方库未公开某些接口时,反射可以用来实现功能扩展。 4. 数据绑定框架:如Butter Knife,利用反射实现视图和数据的...

Global site tag (gtag.js) - Google Analytics