反编译一个类的方法
程序员文章站
2024-03-13 11:57:33
...
//反编译某个类的所有方法
public class CustomerService{
public boolean login(String name,String password){
if("admin".eaquals(name)&&"123".equals(password)){
return true;
}
return false
}
//退出
public void logout(){
System.out.println("系统退出登录");
}
}
public class Test{
public static void main(String[] args){
//获取类
Class c = Class.forName("CustomerService");
//获取所有方法
Method[] ms = c.getDeclaredMethods();
/*fot(Method m:ms){
//获取方法名
System.out.println(m.getName()); //login logout
//获取修饰符
System.out.println(MOdifier.toString(m.getModifiers()));
//方法的返回值类型 Class getReturnType()
Class returnType = m.getReturnType();
System.out.println(returnType.getSimpleName()); //boolean void
//获取形式参数类型 ,可能没有,可能有多个
//Class[] getParameterType();按照声明顺序返回Class数组,数组表示此Method对象所表示方法的形参
Classs[] parameterTypes = m.getParameterType();
for(Class parameterTYpe:parameterTypes){
System.out.println(parameterType.getSimpleName());
}
}
*/
//反编译CustomerService类
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(Mofier.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);
}
}
获取类的特定方法
获取构造方法
上一篇: 详解Java如何实现图像灰度化