黑马程序员技术交流社区

标题: 反编译某个类中的所有方法 [打印本页]

作者: doevents    时间: 2013-9-22 22:13
标题: 反编译某个类中的所有方法
import java.lang.reflect.*;
public class ReflectTest06
{
public static void main(String[] args) throws Exception{
  
  //获取类
  Class c = Class.forName("java.lang.String");
  //获取所有的方法
  Method[] ms = c.getDeclaredMethods();
  
  /*
  for(Method m:ms){
   //修饰符
   System.out.println(Modifier.toString(m.getModifiers()));
   //方法的返回值类型
   Class returnType = m.getReturnType();
   System.out.println(returnType.getSimpleName());
   //方法名
   System.out.println(m.getName());
   //方法的形式参数列表
   Class[] parameterTypes = m.getParameterTypes();
   for(Class parameterType:parameterTypes){
    System.out.println(parameterType.getSimpleName());
   }
  }
  */

  //反编译
  StringBuffer sb = new StringBuffer();
  sb.append(Modifier.toString(c.getModifiers())+" class ");
  sb.append(c.getSimpleName()+"{\n");

  for(Method m:ms){
   sb.append("\t");
   sb.append(Modifier.toString(m.getModifiers())+" ");
   sb.append(m.getReturnType().getSimpleName()+" ");
   sb.append(m.getName()+"(");
   //形参
   Class[] parameterTypes = m.getParameterTypes();
   for(int i=0;i<parameterTypes.length;i++){
    Class parameterType = parameterTypes[i];
    if(i==parameterTypes.length-1){
     sb.append(parameterType.getSimpleName());
    }else{
     sb.append(parameterType.getSimpleName()+",");
    }
   
   }
   sb.append("){}\n");
  }
  sb.append("}");
  System.out.println(sb);
}
}
希望对大家有帮助。

作者: 许庭洲    时间: 2013-9-23 15:45
值得学习ing!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2