1. package com.atguigu.java3;
    2. import com.atguigu.java2.Person;
    3. import org.junit.Test;
    4. import java.lang.reflect.Field;
    5. import java.lang.reflect.Modifier;
    6. /**
    7. * 获取当前运行时类的属性结构
    8. *
    9. * @author Dxkstart
    10. * @create 2021-06-07 14:00
    11. */
    12. public class FieldTest {
    13. @Test
    14. public void test1() {
    15. Class clazz = Person.class;
    16. //获取属性结构
    17. //getFields():获取当前运行时类及其父类中声明为public访问权限的属性
    18. Field[] fields = clazz.getFields();
    19. for (Field f : fields) {
    20. System.out.println(f);
    21. }
    22. System.out.println("********************");
    23. //getDeclaredFields():获取当前运行时类中声明的所有属性。(不包含父类中声明的属性)
    24. Field[] declaredFields = clazz.getDeclaredFields();
    25. for (Field f : declaredFields) {
    26. System.out.println(f);
    27. }
    28. }
    29. //权限修饰符 数据类型 变量名
    30. @Test
    31. public void test2() {
    32. Class<Person> clazz = Person.class;
    33. Field[] declaredFields = clazz.getDeclaredFields();
    34. for (Field f : declaredFields) {
    35. //1.权限修饰符
    36. int modifier = f.getModifiers();
    37. System.out.println(Modifier.toString(modifier));
    38. //2.数据类型
    39. Class type = f.getType();
    40. System.out.println(type +" 数据类型");
    41. //3.变量名
    42. String name = f.getName();
    43. System.out.println(name + " 变量名");
    44. }
    45. }
    46. }