进阶day12-反射操作属性(属性:赋值 / 取值)

This commit is contained in:
2026-04-02 10:06:06 +08:00
parent 32499ad649
commit 1e1927ec45

View File

@@ -0,0 +1,46 @@
package com.inmind.refelct02;
import org.junit.Test;
import java.lang.reflect.Field;
/*
7.反射操作属性
属性的作用:赋值 / 取值
Field对象的set/get方法
*/
public class FieldDemo06 {
public static void main(String[] args) {
//普通的属性操作
Student s = new Student();
//赋值:1.对象名 2.属性名 3.属性值
s.name = "张三";
//取值1.对象名 2.属性名
System.out.println(s.name);
}
//反射操作属性
@Test
public void method1() throws NoSuchFieldException, IllegalAccessException {
//反射的前提
Student s = new Student();
Class<? extends Student> clazz = s.getClass();
//获取name属性对象
Field nameField = clazz.getDeclaredField("name");
System.out.println(nameField.getName());//获取属性名
System.out.println(s.name);
/*
赋值
void set(Object obj, Object value) 将指定的对象参数中由此 Field对象表示的字段设置为指定的新值。
*/
nameField.set(s,"张三");
/*
取值
Object get(Object obj) 返回由该 Field表示的字段在指定对象上的值。
*/
Object nameVal = nameField.get(s);
System.out.println(nameVal);
}
}