⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 changefieldsdemo.java

📁 java的反射机制的代码实例
💻 JAVA
字号:
import java.lang.reflect.*;
public class ChangeFieldsDemo 
{
	public static void main(String[] args) 
	{
		//获取Class对象用来描述自定义类Employee
		Class c = Employee.class;
		
		try 
		{
			//获取自定义类Employee中,对应名称的属性字段
			Field f1 = c.getField("name");
			Field f2 = c.getDeclaredField("age");
			Field f3 = c.getDeclaredField("sex");
			
			//创建Employee对象,初始化属性值
			Employee em = new Employee();
			//输出未改变成员变量前,各成员变量的值
			System.out.println("Before Change:");
			System.out.println(em.get_name());
			System.out.println(em.get_age());
			System.out.println(em.get_sex()+"\n");
			
			//使用Field对象的set方法,改变成员变量的值		
			f1.set(em, "Xuq");
			f2.setInt(em, 23);
			f3.setAccessible(true);
			f3.set(em, "female");
			
			//输出改变成员变量后,各成员变量的值
			System.out.println("After Change:");
			System.out.println(em.get_name());
			System.out.println(em.get_age());
			System.out.println(em.get_sex());		
		} 
		catch (SecurityException e) {e.printStackTrace();} 
		catch (NoSuchFieldException e) {e.printStackTrace();} 
		catch (IllegalArgumentException e) {e.printStackTrace();} 
		catch (IllegalAccessException e) {e.printStackTrace();}
	}
}

class Employee   //自定义类
{
	public String name;
	int age;
	private String sex;
	
	public Employee() //无参数构造方法
	{
		name = "wangxyw";
		age = 24;
		sex = "male";
	}
	
	//含参数构造方法
	public Employee(String name,int age,String sex)
	{
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
	
	//获取自定义类属性值方法	
	public String get_name(){return name;}
	public int get_age(){return age;}
	public String get_sex(){return sex;}
	
	//自定义类改变属性值方法	
	public void setAll(String name,int age,String sex)
	{
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
}

⌨️ 快捷键说明

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