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();
}
}
java反编译源码_java反编译获取源码相关推荐
- Java反射机制01_反射的概念以及获取字节码信息 的四种方式
Java反射机制01-反射的概念以及获取字节码信息 的四种方式 一.反射的概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象, 都能够调用它的任意 ...
- java预编译啥意思_java预编译 java jdbc 预编译语句和普通语句的区别
java中什么是预编译precompile?总有一天你恍然大悟,父母是你花心思,花时间最少,却最爱你的人. 什么是预编译?起什么作用的? . 在java中如何实现预编译?祝你幸福!这句话真俗.小编会祝 ...
- java 必须存在默认构造器_Java默认构造方法在字节码的实现
方法在程序的重要性不言而喻,了解方法在字节码中的表达能够使我们开发做到更加心中有数. 再看class文件结构 上一步已经分析完了class文件中的字段(field_info)的表达,接下来就是方法数( ...
- java 32位授权码_Java实现OAuth2.0授权码方式
Java实现OAuth2.0授权码方式 前面介绍了OAuth2.0和授权方式,可以参考以下文章: 今天就用Java来验证OAuth2.0授权方式的授权码式,我们Spring Cloud的OAuth来实 ...
- java list addall源码_Java集合:ArrayList源码分析
其实我看到已有很多大佬写过此类文章,并且写的也比较清晰明了,那我为何要再写一遍呢?其实也是为了加深本身的印象,巩固本身的基础html (主要是不少文章没有写出来我想知道的东西!!!!!!!)java ...
- java linkedlist源码_Java集合之LinkedList源码分析
一.LinkedList简介 LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的. ps:这里有一个问题,就是关于实现LinkedList的数据结构是否 ...
- java selector 源码_Java NIO——Selector机制源码分析---转
一直不明白pipe是如何唤醒selector的,所以又去看了jdk的源码(openjdk下载),整理了如下: 以Java nio自带demo : OperationServer.java Oper ...
- java futuretask 源码_java并发编程——FutureTask源码分析
FutureTask的简单示例: FutureTask的应用场景,如果在当前线程中需要执行比较耗时的操作,但又不想阻塞当前线程时,可以把这些作业交给FutureTask,另开一个线程在后台完成,当当前 ...
- java在线学习系统源码_Java在线考试系统源码
今天给大家演示的是一款由jsp+mysql+ssm框架实现的学生在线考试系统,,今天这个考试系统功能比较完善,支持单选.多选.简答题型,试题可以批量导入,导入时可选择多种方式导入,比如导入到试题库,导 ...
最新文章
- mongodb的简单使用
- 创建ssh 服务的镜像
- C语言指针入门 《C语言非常道》
- 【c++面向对象编程】工资管理系统
- 荷兰警方错买300万欧元Office套件 法院:微软无需退款
- Vite+Vue3页面空白、图标不显示问题解决
- python统计英文句子每个单词字数_Python小书3-文本英文单词统计
- mysql 查询 系统字段 自然日_Mysql查询用户留存/留存率问题用户n日(内)留存、某日新增用户n日(内)留存...
- 解决org.apache.hadoop.io.nativeio.NativeIOException: 当文件已存在时,无法创建该文件。
- ajax与DOM的使用,AJAX和DOM的运行经验
- 问题1:UIView不会被释放--block中如果有self的话会造成循环引用
- 浙江省计算机二级理论知识,2020年浙江省高校计算机二级MS Office考试大纲
- 精品微信小程序班级打卡系统+后台管理系统|前后分离VUE
- matlab可以算二重积分么,matlab 二重积分函数
- 【KDD2021】Are we really making much progress? Revisiting, benchmarking, and refining HGNNs
- Vmware打开服务器的时候提示“该虚拟机似乎正在使用中。”
- 《MFC如何添加子对话框》
- tkinter天气查询可视化
- 七段显示器显示整数(C语言) ----存稿
- 学Python真的没用吗?Python到底可以干什么?
热门文章
- Silverlight4中右键菜单实现-附源码下载
- 江湖不再平静---51CTO学院停服公告
- Cray:XC50提供了最高密度的性能
- POJ 1183 反正切函数的应用(数学代换,基本不等式)
- SQLAlchemy文档翻译
- [LeetCode] Inorder Successor in BST 二叉搜索树中的中序后继节点
- Android应用程序组件Content Provider的共享数据更新通知机制分析
- Visual C++ 2008入门经典 第四章数组 字符串(练习题)
- Equals,ReferenceEquals,==的区别
- jenkins添加linux作为slave