java反射中如何改变private中的变量及方法呢?
									
下文笔者将讲述使用Java代码修改类中private中的变量及方法的示例,
通过对此示例的学习,大家可以了解到反射修改private变量的方法,如下所示:
				 
				通过对此示例的学习,大家可以了解到反射修改private变量的方法,如下所示:
定义一个类
class TestClass{
 private String name="java265.com";
 public getName(){
  system.out.println("public getName " + name);
  return name;
 }
 private getName2(){
  system.out.println("private getName2 " + name);
  return name;
 }
 public TestClass(){}
}
如果我们需name的值,可以使用一下方法
//未修改前的name值
class<TestClass> calzz=TestClass.class;
//获取其构造方法
Constructor cons=clazz.getConstructor(new class[]{});
//实例化对象 
TestClass test=(DemoTest)cons.newInstance(); 
//运行getName方法 
Method method=clazz.getMethod("getName",new Class[]{String.class});
method.invoke(test);
//打印出 java265.com
-------------------------------------------------------------------------
此时修改name值的方法,如下所示: 
//获取field
Field field=clazz.getDeclaredField("name");
//将此对象accessible的值设置为true 
//此种设置为调整java语言的访问性检查
field.setAccessible(true);
//修改变量值
field.set("name","我的最爱");
//测试修改值是否成功
Method method=clazz.getDeclaredMethod("getName2");
method.setAccessible(true);
method.invoke(test);
//打印出 我的最爱
									
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

			
               
               
               
               
          
