黑马程序员技术交流社区

标题:  谈谈Java程序的反编译 [打印本页]

作者: tfy    时间: 2012-12-19 23:29
标题:  谈谈Java程序的反编译


 谈谈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