用java反射机制实现的比较不可思议的一件事_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 用java反射机制实现的比较不可思议的一件事

用java反射机制实现的比较不可思议的一件事

 2013/7/19 18:58:10  fangguanhong  程序员俱乐部  我要评论(0)
  • 摘要:这个例子一共两个java文件:packagecom.spring;publicclassTest{privateStringstr="hello";publicStringgetStr(){returnstr;}}packagecom.spring;importjava.lang.reflect.Field;publicclassMain{publicstaticvoidmain(String[]args)throwsException{//正常情况下Test类里面的str属性值是没法改变的
  • 标签:实现 Java 反射 反射机制
这个例子一共两个java文件:

class="java" name="code">package com.spring;

public class Test {
	private String str = "hello";

	public String getStr() {
		return str;
	}
}



package com.spring;

import java.lang.reflect.Field;

public class Main {
	public static void main(String[] args) throws Exception {
		//正常情况下Test类里面的str属性值是没法改变的,但是通过反射的强大功能是可以实现的
		
		
		Test test = new Test();
		Class clazz = Test.class;
		Field field = clazz.getDeclaredField("str");
		
		//设置为true表示反射会压制java语言的访问检查,也就是java不再检查私有的成员变量,此时反射也可以访问此变量。
		//因为str属性是private的,外界是无法访问的,如果不设置此属性运行时会报错。
		field.setAccessible(true);
		
		field.set(test, "world");
		System.out.println(test.getStr());//激动人心的时刻到了。把str的值改了。
	}
}
发表评论
用户名: 匿名