进阶day12-反射操作属性(属性:赋值 / 取值)
This commit is contained in:
46
javaSE-day12/src/com/inmind/refelct02/FieldDemo06.java
Normal file
46
javaSE-day12/src/com/inmind/refelct02/FieldDemo06.java
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user