fieldtest.java

来自「疯狂Java讲义_源码(含Java设计模式CHM」· Java 代码 · 共 48 行

JAVA
48
字号
import java.lang.reflect.*;

/**
 * Description:
 * <br/>Copyright (C), 2008-2010, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */

class Person
{
	private String name;
	private int age;
	public String toString()
	{
		return "Person [ name:" + name + 
			" , age:" + age + " ]";
	}
}
public class FieldTest
{
	public static void main(String[] args) 
		throws Exception
	{
		//创建一个Person对象
		Person p = new Person();
		//获取Person类对应的Class对象
		Class<Person> personClazz = Person.class;
		//获取Person类名为name的属性
		//使用getDeclaredField,表明可获取各种访问控制符的field
		Field nameField = personClazz.getDeclaredField("name");
		//设置通过反射访问该Field时取消访问权限检查
		nameField.setAccessible(true);
		//调用set方法为p对象的指定Field设置值
		nameField.set(p , "Yeeku.H.Lee");
		//获取Person类名为age的属性
		Field ageField = personClazz.getDeclaredField("age");
		//设置通过反射访问该Field时取消访问权限检查
		ageField.setAccessible(true);
		//调用setInt方法为p对象的指定Field设置值
		ageField.setInt(p , 30);
		System.out.println(p);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?