class DemoTest{
private String name="123";
public getName(){
system.out.println("public getName " + name);
return name;
}
private getName2(){
system.out.println("private getName2 " + name);
return name;
}
}
如这个,要改变name的值。如何改变。通过java反射如何改变
先来看看如何用反射来调用getName方法
class<DemoTest> calzz=DemoTest.class;
Constructor cons=clazz.getConstructor(new class[]{});//这个是得到class对象的构造方法。参数为构造方法的参数的类的对象。
如:DemoTest有一个构造方法为public DemoTest(String arg0,String arg1){......}
这时,Constructor cons=clazz.getConstructor(new class[]{String.class,String.class});两个String.calss分别对应arg0,arg1.
接下来是:
DemoTest test=(DemoTest)cons.newInstance(new Object[]{});//生成相应的对象。参数new Object[]{} 就是构造方法对应的参数的具体值。如刚才的:
DemoTest test=(DemoTest)cons.newInstance(new Object[]{“李车”,"张三"});
接下来:
Method method=clazz.getMethod("getName",new Class[]{String.class});
method.invoke(test,new Object[]{"王五"});
这时就可以打印出王五了。
那要如何把name为private 的值进行改变呢。
1。先得到field,
Field field=clazz.getDeclaredField("name");
2.将此对象的 accessible
标志设置为指示的布尔值。值为 true
则指示反射的对象在使用时应该取消 Java
语言访问检查。值为 false
则指示反射的对象应该实施 Java 语言访问检查。
field.setAccessible(true);
3.对变量值进行修改
field.set("name","王五");
OK;
要访问私有的方法也是一样。
Method method=clazz.getDeclaredMethod("getName2");
method.setAccessible(true);
method.invoke(test,new Object[]{"王五"});
OK!
分享到:
相关推荐
Java 反射访问私有变量和私有方法 Java 反射机制是 Java 语言中的一种强大的工具,使得我们可以在运行时装配代码,而无需在对象之间进行源代码链接,从而使代码更具灵活性。在实际测试中,我们经常需要访问类的非...
标题“Java反射机制修改私有成员变量的实现_Reflection”着重讲述了如何利用反射来修改私有成员变量的值。在Java中,私有成员变量通常被视为封装的一部分,不被外部类直接访问。然而,通过反射,我们可以绕过这种...
但通过反射,我们可以突破这种限制,实现对private变量和方法的操作。 首先,我们需要理解Java反射的基本步骤: 1. 获取Class对象:`Class<?> clazz = DemoTest.class;` 这里`DemoTest.class`是通过类名直接获取...
### Java反射机制详解 #### 一、什么是Java反射? Java反射是Java编程语言的一个特性,它允许运行时检查和操作程序结构(类、字段、方法等)。反射的主要用途包括但不限于:动态实例化对象、访问私有成员、调用...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作对象的内部属性、方法和实现。...希望这个教程能帮助你进一步了解Java反射,为你在编程旅程中打开新的可能性。
### Java反射操作父类所有属性和方法 #### 一、引言 在Java编程语言中,反射(Reflection)是一项强大的特性,它允许程序在运行时动态地获取类的信息,并能够直接操作这些信息。通过反射,我们可以获取类的字段、...
Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。这个特性使得Java具有高度的灵活性和强大的功能,尤其是在开发框架、插件系统以及元数据处理等方面有着广泛的...
### Java反射机制与NoSuchMethodException详解 在Java编程中,反射是一种强大的机制,允许程序在运行时检查和修改自身结构和行为。然而,当开发者尝试使用反射调用一个不存在的方法时,便会遇到`java.lang....
javax.security.auth.x500 此包包含应该用来在 Subject 中存储 X500 Principal 和 X500 Private Crendentials 的类。 javax.security.cert 为公钥证书提供类。 javax.security.sasl 包含用于支持 SASL 的类和接口...
8. **数组**:数组是相同类型数据的集合,可以在一个变量中存储多个值。Java支持一维、二维及多维数组。 9. **类与对象**:面向对象编程的基础是类和对象。类是对象的模板,包含属性(成员变量)和行为(方法)。...
- **Java环境搭建**:指导读者如何安装JDK(Java Development Kit),配置环境变量,并介绍常用的集成开发环境(IDE)如Eclipse或IntelliJ IDEA。 #### 2. Java基础语法 - **数据类型**:讲解Java中的基本数据类型...
### Java反射机制深入理解 #### 一、反射机制概述 Java反射机制是一种强大的工具,它允许程序在运行时检查和操作任何类、方法、构造函数和字段等元素。这种能力对于构建灵活的应用程序和框架非常有用,特别是那些...
### Java反射机制详解 #### 一、引言 Java反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地访问类的信息,并能够直接操作这些类的对象。这种能力对于许多开发框架(如Spring)来说至关重要,因为...
本文将详细介绍Java反射技术的核心概念及其应用。 #### 核心概念 1. **Class类**:Java反射的基础类是`Class`,每个类都对应一个`Class`实例。可以通过多种方式获取`Class`对象,例如使用类名直接获取(`MyClass....
在Java编程中,权限设置通常涉及到访问控制修饰符(如public, private, protected)以及类、方法和变量的可见性。正确地设置权限能防止未授权的访问,保护代码的内部实现细节,并维护程序的封装性。此外,描述中的...
以上只是JavaNote-main可能涉及的部分内容,实际压缩包可能还包含更多如设计模式、数据库连接、JVM优化、反射、注解等进阶主题。学习Java时,理解并实践这些知识点将有助于成为一名熟练的Java开发者。
类是Java中的蓝图,它定义了对象的属性(变量)和行为(方法)。对象是类的实例,可以调用类中定义的方法和访问其变量。Java使用`public`、`private`、`protected`等访问修饰符控制成员的可见性。 5. **封装、继承...
Java反射机制是一种强大的运行时功能,使得Java能够在程序执行过程中动态地获取类的信息并操纵类的对象。这一特性极大地扩展了Java语言的能力,使其更加灵活多变。下面将详细介绍Java反射机制的主要功能及其应用场景...