如何使用java反射获取类属性

avatar
作者
猴君
阅读量:0

在Java中,使用反射可以获取类的属性。以下是一个简单的示例,演示如何使用Java反射获取类属性:

  1. 首先,创建一个简单的Java类,例如Person
public class Person {     private String name;     private int age;      public Person(String name, int age) {         this.name = name;         this.age = age;     }      public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }      public int getAge() {         return age;     }      public void setAge(int age) {         this.age = age;     } } 
  1. 然后,使用Java反射获取Person类的属性:
import java.lang.reflect.Field;  public class ReflectionDemo {     public static void main(String[] args) {         try {             // 加载并初始化Person类             Class<?> personClass = Class.forName("Person");              // 获取Person类的所有声明的字段(包括私有、受保护、默认访问和公共字段,但不包括继承的字段)             Field[] fields = personClass.getDeclaredFields();              // 遍历所有字段并输出字段名和字段值             for (Field field : fields) {                 // 设置可访问性,以便访问私有字段                 field.setAccessible(true);                  String fieldName = field.getName();                 Object fieldValue = null;                  if (field.getType() == String.class) {                     fieldValue = field.get(new Person("John", 30));                 } else if (field.getType() == int.class) {                     fieldValue = field.get(new Person("John", 30));                 }                  System.out.println("Field name: " + fieldName + ", Field value: " + fieldValue);             }         } catch (ClassNotFoundException e) {             e.printStackTrace();         } catch (IllegalAccessException e) {             e.printStackTrace();         }     } } 

运行上述代码,将输出Person类的属性名和属性值:

Field name: name, Field value: John Field name: age, Field value: 30 

请注意,这个示例仅适用于获取Person类的声明字段。如果要获取继承的字段,可以使用getSuperclass()方法获取父类,然后使用getDeclaredFields()方法获取父类的声明字段。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!