Introspector与反射类似,主要是对Java Bean属性、方法等的一种处理方法.
1. Class Diagram
2. 实例
package com.siyuan.jdktest;
import java.beans.BeanDescriptor;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.MethodDescriptor;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
class Person {
private String name;
private int age;
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
}
public class IntrospectorTest {
/**
* @param args
* @throws IntrospectionException
*/
public static void main(String[] args) throws IntrospectionException {
// TODO Auto-generated method stub
BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);
System.out.println("BeanDescriptor===========================================");
BeanDescriptor beanDesc = beanInfo.getBeanDescriptor();
Class cls = beanDesc.getBeanClass();
System.out.println(cls.getName());
System.out.println("MethodDescriptor===========================================");
MethodDescriptor[] methodDescs = beanInfo.getMethodDescriptors();
for (int i = 0; i < methodDescs.length; i++) {
Method method = methodDescs[i].getMethod();
System.out.println(method.getName());
}
System.out.println("PropertyDescriptor===========================================");
PropertyDescriptor[] propDescs = beanInfo.getPropertyDescriptors();
for (int i = 0; i < propDescs.length; i++) {
Method methodR = propDescs[i].getReadMethod();
if (methodR != null) {
System.out.println(methodR.getName());
}
Method methodW = propDescs[i].getWriteMethod();
if (methodW != null) {
System.out.println(methodW.getName());
}
}
}
}
3. 运行结果
BeanDescriptor===========================================
com.siyuan.jdktest.Person
MethodDescriptor===========================================
hashCode
setAge
equals
wait
wait
notify
getClass
toString
getAge
notifyAll
setName
wait
getName
PropertyDescriptor===========================================
getAge
setAge
getClass
getName
setName