java反编译源码_java反编译获取源码

//实现反编译的类,现在可以判断具体有哪些方法,但是方法里面的具体细节还不能输出

importjava.lang.reflect.Constructor;importjava.lang.reflect.Field;importjava.lang.reflect.Method;importjava.lang.reflect.Modifier;importjava.lang.reflect.Parameter;public classDecompile {private Class>c;privateReflect reflect;privateString className;publicDecompile(String className){try{this.className =className;

c=Class.forName(className);

reflect=(Reflect)c.newInstance();

}catch(ClassNotFoundException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(InstantiationException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(IllegalAccessException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}//获得构造方法

public voidgetConstructFuntion(){

Constructor[] constructors=c.getConstructors();for(Constructor constructor:constructors){

System.out.println(

Modifier.toString(constructor.getModifiers())+" "

+constructor.getName()+"("

+getParameter(constructor)+"){}");

}

}//获得类信息

public voidgetClassInfo(){try{

System.out.println(

Modifier.toString(c.getModifiers())+" class"

+className+"{");

}catch(SecurityException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(IllegalArgumentException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}//获得类属性信息

public voidgetProperty(){

Field[] fields=c.getDeclaredFields();for(Field field:fields){

field.setAccessible(true);try{

System.out.println(

Modifier.toString(field.getModifiers())+" "

+field.getType().getSimpleName()+" "

+field.getName()+" = "

+field.get(reflect)+";");

}catch(IllegalArgumentException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(IllegalAccessException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}

}//获得类方法信息

public voidgetFuntion(){

Method[] methods=c.getDeclaredMethods();for(Method method:methods){

System.out.println(

Modifier.toString(method.getModifiers())+" "

+method.getReturnType().getSimpleName()+" "

+method.getName().toString()+"("

+getParameter(method)+"){}");

}

}//获得参数字符串

publicString getParameter(Object obj){

Parameter[] parameters=null;if("Method".equals(obj.getClass().getSimpleName())){

parameters=((Method)obj).getParameters();

}else{

parameters=((Constructor)obj).getParameters();

}

StringBuffer sb= newStringBuffer();int count = 0;for(Parameter parameter:parameters){if(count!=0){

sb.append(",");

}

sb.append(parameter.getType().getSimpleName()+" "

+parameter.getName().toString());

count++;

}returnsb.toString();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值