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

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();

}

}

java反编译源码_java反编译获取源码相关推荐

  1. Java反射机制01_反射的概念以及获取字节码信息 的四种方式

    Java反射机制01-反射的概念以及获取字节码信息 的四种方式 一.反射的概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象, 都能够调用它的任意 ...

  2. java预编译啥意思_java预编译 java jdbc 预编译语句和普通语句的区别

    java中什么是预编译precompile?总有一天你恍然大悟,父母是你花心思,花时间最少,却最爱你的人. 什么是预编译?起什么作用的? . 在java中如何实现预编译?祝你幸福!这句话真俗.小编会祝 ...

  3. java 必须存在默认构造器_Java默认构造方法在字节码的实现

    方法在程序的重要性不言而喻,了解方法在字节码中的表达能够使我们开发做到更加心中有数. 再看class文件结构 上一步已经分析完了class文件中的字段(field_info)的表达,接下来就是方法数( ...

  4. java 32位授权码_Java实现OAuth2.0授权码方式

    Java实现OAuth2.0授权码方式 前面介绍了OAuth2.0和授权方式,可以参考以下文章: 今天就用Java来验证OAuth2.0授权方式的授权码式,我们Spring Cloud的OAuth来实 ...

  5. java list addall源码_Java集合:ArrayList源码分析

    其实我看到已有很多大佬写过此类文章,并且写的也比较清晰明了,那我为何要再写一遍呢?其实也是为了加深本身的印象,巩固本身的基础html (主要是不少文章没有写出来我想知道的东西!!!​!!!!)java ...

  6. java linkedlist源码_Java集合之LinkedList源码分析

    一.LinkedList简介 LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的. ps:这里有一个问题,就是关于实现LinkedList的数据结构是否 ...

  7. java selector 源码_Java NIO——Selector机制源码分析---转

    一直不明白pipe是如何唤醒selector的,所以又去看了jdk的源码(openjdk下载),整理了如下: 以Java nio自带demo : OperationServer.java   Oper ...

  8. java futuretask 源码_java并发编程——FutureTask源码分析

    FutureTask的简单示例: FutureTask的应用场景,如果在当前线程中需要执行比较耗时的操作,但又不想阻塞当前线程时,可以把这些作业交给FutureTask,另开一个线程在后台完成,当当前 ...

  9. java在线学习系统源码_Java在线考试系统源码

    今天给大家演示的是一款由jsp+mysql+ssm框架实现的学生在线考试系统,,今天这个考试系统功能比较完善,支持单选.多选.简答题型,试题可以批量导入,导入时可选择多种方式导入,比如导入到试题库,导 ...

最新文章

  1. mongodb的简单使用
  2. 创建ssh 服务的镜像
  3. C语言指针入门 《C语言非常道》
  4. 【c++面向对象编程】工资管理系统
  5. 荷兰警方错买300万欧元Office套件 法院:微软无需退款
  6. Vite+Vue3页面空白、图标不显示问题解决
  7. python统计英文句子每个单词字数_Python小书3-文本英文单词统计
  8. mysql 查询 系统字段 自然日_Mysql查询用户留存/留存率问题用户n日(内)留存、某日新增用户n日(内)留存...
  9. 解决org.apache.hadoop.io.nativeio.NativeIOException: 当文件已存在时,无法创建该文件。
  10. ajax与DOM的使用,AJAX和DOM的运行经验
  11. 问题1:UIView不会被释放--block中如果有self的话会造成循环引用
  12. 浙江省计算机二级理论知识,2020年浙江省高校计算机二级MS Office考试大纲
  13. 精品微信小程序班级打卡系统+后台管理系统|前后分离VUE
  14. matlab可以算二重积分么,matlab 二重积分函数
  15. 【KDD2021】Are we really making much progress? Revisiting, benchmarking, and refining HGNNs
  16. Vmware打开服务器的时候提示“该虚拟机似乎正在使用中。”
  17. 《MFC如何添加子对话框》
  18. tkinter天气查询可视化
  19. 七段显示器显示整数(C语言) ----存稿
  20. 学Python真的没用吗?Python到底可以干什么?

热门文章

  1. Silverlight4中右键菜单实现-附源码下载
  2. 江湖不再平静---51CTO学院停服公告
  3. Cray:XC50提供了最高密度的性能
  4. POJ 1183 反正切函数的应用(数学代换,基本不等式)
  5. SQLAlchemy文档翻译
  6. [LeetCode] Inorder Successor in BST 二叉搜索树中的中序后继节点
  7. Android应用程序组件Content Provider的共享数据更新通知机制分析
  8. Visual C++ 2008入门经典 第四章数组 字符串(练习题)
  9. Equals,ReferenceEquals,==的区别
  10. jenkins添加linux作为slave