谈谈Java程序的反编译 |
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);
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |