java反射--5.对所有属性(包括私有属性)进行赋值和取值

package set;

public class Person {
    
    

	private String name;
	private int age;

	// 创建构造方法,在new时就给属性传值
	public Person() {
    
    
	}

	public Person(String name, int age) {
    
    
		this.name = name;
		this.age = age;
	}

	@Override
	public String toString() {
    
    
		return this.name + "\t" + this.age;
	}

}
package test0812;
import java.lang.reflect.Field;
//对所有属性(包括私有属性)进行赋值和取值
public class Test05 {
    
    

	public void createObj(String className) {
    
    
		try {
    
    
			Class clazz = Class.forName(className);
			Object obj = clazz.newInstance();
			
			//获取name属性
			Field fieldName = clazz.getDeclaredField("name");
			//赋予私有属性访问权限--直接访问私有权限,默认为假
			fieldName.setAccessible(true);
			fieldName.set(obj,"张三");//给name属性赋值
			System.out.println(fieldName.get(obj));//张三
			
			//获取age属性
			Field fieldAge = clazz.getDeclaredField("age");
			//赋予私有属性访问权限--直接访问私有权限,默认为假
			fieldAge.setAccessible(true);
			fieldAge.set(obj,23);//给age属性赋值
			System.out.println(fieldAge.get(obj));//23
			
			//System.out.println(obj);
		} catch (Exception e) {
    
    
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
    
    
		Test05 t = new Test05();
		t.createObj("test0812.Person");
	}
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/gcyqweasd/article/details/109928586