package com.atguigu.java3;import com.atguigu.java2.Person;import org.junit.Test;import java.lang.reflect.Field;import java.lang.reflect.Modifier;/** * 获取当前运行时类的属性结构 * * @author Dxkstart * @create 2021-06-07 14:00 */public class FieldTest { @Test public void test1() { Class clazz = Person.class; //获取属性结构 //getFields():获取当前运行时类及其父类中声明为public访问权限的属性 Field[] fields = clazz.getFields(); for (Field f : fields) { System.out.println(f); } System.out.println("********************"); //getDeclaredFields():获取当前运行时类中声明的所有属性。(不包含父类中声明的属性) Field[] declaredFields = clazz.getDeclaredFields(); for (Field f : declaredFields) { System.out.println(f); } } //权限修饰符 数据类型 变量名 @Test public void test2() { Class<Person> clazz = Person.class; Field[] declaredFields = clazz.getDeclaredFields(); for (Field f : declaredFields) { //1.权限修饰符 int modifier = f.getModifiers(); System.out.println(Modifier.toString(modifier)); //2.数据类型 Class type = f.getType(); System.out.println(type +" 数据类型"); //3.变量名 String name = f.getName(); System.out.println(name + " 变量名"); } }}