黑马程序员技术交流社区
标题:
反编译某个类中的所有方法
[打印本页]
作者:
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