--------------------- 题记
某次读代码的时候,看到getDeclaredFields的使用,然后对其做了下小测试。
--------------------- 代码
package field;
import java.lang.reflect.Field;
public class Test {
public static void main(String[] args) {
MyClass myClass = new MyClass();
Field[] field1 = myClass.getClass().getDeclaredFields();//所有字段
Field[] field2 = myClass.getClass().getFields();//公共字段(public)
try {
for(Field f : field1) {
System.out.println("field1 - > DeclaredFields");
System.out.println("字段名:" + f.getName());
if (f.getName() == "thePublic") {//私有属性不能访问
System.out.println("字段值:" + f.get(myClass));//得到某个对象(myClass对象)的该字段值
System.out.println("修改字段的值(public -> 123)");
f.set(myClass, "123");
System.out.println("修改后的值:" + f.get(myClass) + "\n");
}
}
for(Field f : field2) {
System.out.println("field2 -> getFields");
System.out.println("字段名:" + f.getName());
System.out.println("字段值:" + f.get(myClass));//得到某个对象(myClass对象)的该字段值
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class MyClass {
@SuppressWarnings("unused")
private String thePrivate = "private";
public String thePublic = "public";
}