码迷,mamicode.com
首页 > 编程语言 > 详细

java反射调用私有方法和修改私有属性

时间:2015-10-19 00:41:07      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:

//调用私有方法
package com.java.test; public class PrivateMethod { private String sayHello(String name) { return "hello "+name; } }

测试:

package com.java.test;

import java.lang.reflect.Method;

public class PrivateMethodTest
{

	public static void main(String[] args)throws Exception
	{
		PrivateMethod  p = new PrivateMethod();
		
		Class<?> classType = p.getClass();
		
		Method method = classType.getDeclaredMethod("sayHello", new Class[]{String.class});
		
		method.setAccessible(true);//压制java的检查机制
		
		String str = (String)method.invoke(p, new Object[]{"lzyer"});
		
		System.out.println(str);
	}
}

 

修改私有属性:

package com.java.test;

public class PrivateField
{

	private String name="zhangsan";
	
	public String getName()
	{
		
		return this.name;
	}
}

测试:

package com.java.test;

import java.lang.reflect.Field;

public class PrivateFieldTest
{

	public static void main(String[] args)throws Exception
	{
		PrivateField p = new PrivateField();
		
		Class<?> clazz = p.getClass();
		
		Field field = clazz.getDeclaredField("name");
		
		field.setAccessible(true);//压制java检查机制
		
		field.set(p, "lisi");
		
		System.out.println(p.getName());
	}
}

  

  

 

  

 

java反射调用私有方法和修改私有属性

标签:

原文地址:http://www.cnblogs.com/lzeffort/p/4890736.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!