diff --git a/javaSE-day12/src/com/inmind/refelct02/FieldDemo06.java b/javaSE-day12/src/com/inmind/refelct02/FieldDemo06.java new file mode 100644 index 0000000..841d12f --- /dev/null +++ b/javaSE-day12/src/com/inmind/refelct02/FieldDemo06.java @@ -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 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); + } +}