使用内省API来操作JavaBean。假设有一个名为Person的JavaBean类,望在运行时动态地获取和设置其属性值。

  import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;

public class Main {
    public static void main(String[] args) {
        Person person = new Person();

        try {
            BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);
            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

            for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
                String propertyName = propertyDescriptor.getName();
                if (propertyName.equals("name")) {
                    Method setter = propertyDescriptor.getWriteMethod();
                    setter.invoke(person, "Alice");
                } else if (propertyName.equals("age")) {
                    Method setter = propertyDescriptor.getWriteMethod();
                    setter.invoke(person, 25);
                }
            }

            System.out.println("Name: " + person.getName());
            System.out.println("Age: " + person.getAge());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}