Java代码 package MyTest; public class bean { private String id = null ; private String name = null ; public String getId() { return id; } public void setId(String id) { this .id = id; } public String getName() { return name; } public void setName(String name) { this .name = name; } } package MyTest; import java.beans.BeanInfo; import java.beans.EventSetDescriptor; import java.beans.Introspector; import java.beans.MethodDescriptor; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; public class myBeanIntrospector { public myBeanIntrospector() { try { //实例化一个Bean bean beanObj = new bean(); //依据Bean产生一个相关的BeanInfo类 BeanInfo bInfoObject = Introspector.getBeanInfo(beanObj.getClass(),beanObj.getClass().getSuperclass()); //定义一个用于显示的字符串 String output = "" ; //开始自省 /* * BeanInfo.getMethodDescriptors() * 用于获取该Bean中的所有允许公开的成员方法,以MethodDescriptor数组的形式返回 * * MethodDescriptor类 * 用于记载一个成员方法的所有信息 * MethodDescriptor.getName() * 获得该方法的方法名字 * MethodDescriptor.getMethod() * 获得该方法的方法对象(Method类) * * Method类 * 记载一个具体的的方法的所有信息 * Method.getParameterTypes() * 获得该方法所用到的所有参数,以Class数组的形式返回 * * Class..getName() * 获得该类型的名字 */ output = "内省成员方法:\n" ; MethodDescriptor[] mDescArray = bInfoObject.getMethodDescriptors(); for ( int i= 0 ;i<mdescarray.length p="" ) { //获得一个成员方法描述器所代表的方法的名字 String methodName = mDescArray.getName(); String methodParams = new String(); //获得该方法对象 Method methodObj = mDescArray.getMethod(); //通过方法对象获得该方法的所有参数,以Class数组的形式返回 Class[] parameters = methodObj.getParameterTypes(); if (parameters.length> 0 ) { //获得参数的类型的名字 methodParams = parameters[0 ].getName(); for ( int j= 1 ;j<parameters.length p="" ) { methodParams = methodParams + "," + parameters[j].getName(); } } output += methodName + "(" + methodParams + ")\n" ; } System.out.println(output);
|