`

使用反射调用对象的私有方法和私有变量

 
阅读更多
代码小例子:
package com.test;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * 使用反射调用对象私有方法,私有属性
 * 
 * @author yale
 * 
 */
public class ReflectInvokeTest
{
	public static void main(String[] args) throws Exception
	{
		Yale p = new Yale();
		Class<? extends Object> clazz = p.getClass();

		Method method = clazz.getDeclaredMethod("sayHiHi",
				new Class[] { String.class });
		method.setAccessible(true);// 压制java的访问控制检查 可以访问类的私有方法
		Object o = method.invoke(p, new Object[] { "hello" });
		System.out.println(o);
		System.out.println("------------------");
		Field f = clazz.getDeclaredField("name");
		f.setAccessible(true);// 压制java的访问控制检查 可以访问类的私有属性
		f.set(p, "lisi");
		System.out.println(p.getName());
	}
}

class Yale
{
	private String sayHiHi(String word)
	{
		return word;
	}

	private String name = "yale";

	public String getName()
	{
		return name;
	}
}


分享到:
评论
6 楼 onlyOneToOne 2012-06-12  
song_in_china 写道
刚刚写了个控制器框架,练练手

好,不错,继续努力
5 楼 song_in_china 2012-06-12  
刚刚写了个控制器框架,练练手
4 楼 song_in_china 2012-06-12  
美女我又来看你来了
3 楼 song_in_china 2012-06-09  
onlyOneToOne 写道
song_in_china 写道
代码和人一样好看

乖不好意思的

有啥不好意思的
2 楼 onlyOneToOne 2012-06-08  
song_in_china 写道
代码和人一样好看

乖不好意思的
1 楼 song_in_china 2012-06-07  
代码和人一样好看

相关推荐

    java * 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class

    提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,java * 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,java * 反射工具类. 提供调用getter/...

    C#net反射实现访问类中的私有变量或者方法

    `Test`类中的`Main`方法则演示了如何使用反射来修改`ChangeValue`类实例中的私有变量。 - **获取类型**:使用`GetType()`方法获取`ChangeValue`对象的类型信息。 - **获取私有字段信息**:通过`GetField`方法,并...

    java 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class

    提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被AOP过的真实类等工具函数.反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被AOP过的真实...

    Java反射访问私有变量和私有方法.doc

    Java 反射访问私有变量和私有方法 Java 反射机制是 Java 语言中的一种强大的工具,使得我们可以在运行时装配代码,而无需在对象之间进行源代码链接,从而使代码更具灵活性。在实际测试中,我们经常需要访问类的非...

    反射修改私有成员变量例子

    在本例中,我们将使用反射机制来修改私有成员变量的值。下面是步骤: 1. 获取类的 Class 对象 使用 `getClass()` 方法获取类的 Class 对象。 2. 获取私有成员变量的 Field 对象 使用 `getDeclaredField()` 方法...

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

    在Java中,反射机制主要用于以下几种情况:动态加载类、访问私有成员、运行时检查类型以及调用私有方法等。 标题“Java反射机制修改私有成员变量的实现_Reflection”着重讲述了如何利用反射来修改私有成员变量的值...

    Java反射调用方法

    Java反射是Java语言提供的一种强大的动态类型特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息,包括但不限于获取类的方法、字段、构造器等,并能动态调用方法和修改字段值。这个特性使得Java具有了更...

    JAVA类的方法调用和变量

    类方法(静态方法)同样不需要实例化对象就可以调用,它们不能访问实例变量,因为实例变量是与对象关联的。 在 Java 中,类的访问修饰符包括: - **Public**:公共的,可以在任何地方访问。 - **Abstract**:抽象...

    利用PowerMock模拟静态方法和私有方法的示例

    下面是一段使用PowerMock模拟静态方法和私有方法的示例代码: ```java import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.core.classloader.annotations.PrepareForTest; import org....

    c# 变量反射使用赋值

    在C#编程中,反射是一种强大的工具,它允许我们在运行时检查类型、接口、属性、方法等信息,并能动态地创建对象和调用方法。在本案例中,我们将探讨如何利用反射来实现变量的动态赋值,特别是在WPF(Windows ...

    QT 不同文件直接变量调用 示例

    在QT编程中,不同文件之间的变量调用是一个常见的需求,特别是在大型项目中,代码通常被组织成多个文件以...通过以上方法,你可以在QT项目中有效地进行不同文件间的变量调用和函数调用,从而实现更高效和模块化的编程。

    accessive包-帮助访问私有参数和私有变量

    2. 使用`Access`静态工具类,通过对象实例和方法名(或字段名)来调用私有方法或访问私有字段。 3. 在JUnit测试类中,使用`@RunWith(AccessiveRunner.class)`注解来启用`accessive`的测试支持。 4. 编写测试用例,...

    反射高手巧妙实现强行私有成员源代码,java跨域范围

    同样的,也可以使用反射调用私有方法。`Method`类提供了`getDeclaredMethod()`方法用于获取指定的私有方法,然后通过`invoke()`方法执行这个方法: ```java private void privateMethod() { System.out.println(...

    C++ 包含类两个类互相调用彼此的类成员变量和方法

    成员对象可以直接访问所属类的所有公有(public)和保护(protected)成员,包括方法和变量。 当我们有两个类A和B,且它们需要互相调用对方的成员时,通常会遇到两个主要问题:前置声明(Forward Declaration)和...

    js类中的公有变量和私有变量

    ### JavaScript 类中的公有变量与私有变量 在JavaScript中,理解类的公有变量与私有变量的概念对于编写高效、安全的代码至关重要。...通过合理地使用公有和私有变量,你可以确保数据的完整性和程序逻辑的清晰性。

    JAVA反射机制的入门代码

    这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用私有方法以及访问未导出的类等方面显得尤为有用。以下是对"JAVA反射机制的入门代码"的详细解释。 首先,我们要理解反射的基本概念...

    JavaScript之私有属性,私有函数,函数实现对外不可见

    1. **闭包**:这是JavaScript中实现私有变量和私有函数最常见的方法。闭包是一种特殊的函数,它可以访问其自身、调用它的函数以及包含它的所有外部变量,即使在其定义的作用域之外也是如此。通过在函数内部定义变量...

    Java反射获取私有构造函数、属性、方法

    Java 反射机制获取私有构造函数的原理是通过获取类的 Constructor 对象,然后调用其 newInstance 方法来创建类的实例。例如,以下代码演示了如何获取私有构造函数: ```java Constructor[] cts = Class.forName(...

    ios 对象私有属性的访问和修改

    要访问私有属性,我们可以使用`objc_getAssociatedObject`和`objc_setAssociatedObject`函数,它们用于关联对象。例如: ```objc objc_setAssociatedObject(myObject, @"privatePropertyKey", @"New Value", OBJC_...

    C++访问类中私有成员变量的方法

    原则上,C++类中私有变量不允许在类之外的其他任何地方访问,一般来说功能完善的类都会提供get,set方法来操作类属性值,还有是是通过友元访问。但是!但如果没有get、set方法都没有提供,也没有定义友元,比如使用...

Global site tag (gtag.js) - Google Analytics