进阶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