-
Java连载118-编译一个类(包括内部函数、方法、类型、参数)
一、反编译一个类(包括内部函数、方法、类型、参数)
package com.bjpowernode.java_learning; public class D118_CustomerService { public boolean login(String name,String pwd) { if("admin".contentEquals(name) && "123".contentEquals(pwd)) { return true; } return false; } public void logout() { System.out.println("系统已经安全退出"); } }
package com.bjpowernode.java_learning; import java.lang.reflect.*; public class D118_1_MethodOfDecompilation { public static void main(String[] args) throws Exception { //获取类 Class c = Class.forName("com.bjpowernode.java_learning.D118_CustomerService"); //获取所有方法,Method是reflect中的类,是获取反编译的类里面的方法 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 x:parameterTypes) { System.out.println(x.getSimpleName()); } System.out.println("===================="); } 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); } }
二、源码:
D118_1_MethodOfDecompilation.java
D118_CustomerService.java
https://github.com/ruigege66/Java/blob/master/D118_1_MethodOfDecompilation.java
https://github.com/ruigege66/Java/blob/master/D118_CustomerService.java
出 处:https://www.cnblogs.com/ruigege0000/p/12969809.html
最新更新
iframe页面总是提示需要重新登录怎么办
mybatis(CRUD)
2021 全球程序员收入报告出炉,看完我真
Maven插件开发教程
引爆全球的 Log4j2 核弹级漏洞,JNDI 到底是
java 读写 ini 配置文件
动力节点-王妈妈Springboot教程(一)Xml 和
一文搞懂Flink Window机制
jdk8下载安装与配置环境变量(windows)
SpringBoot项目启动即执行某个方法
MongoDB常用命令(2)
MongoDB基本介绍与安装(1)
SQLServer触发器调用JavaWeb接口
SQL Server索引的原理深入解析
SqlServer2016模糊匹配的三种方式及效率问题
SQL中Truncate的用法
sqlserver 多表关联时在where语句中慎用tri
链接服务器读取Mysql---出现消息 7347,级别
SQL Server解惑——为什么你拼接的SQL语句换
MySQL视图了解一下
戏说HTML5
让 HTML5 来为你定位
Asp.net 微信H5唤起支付和支付回调
C# asp.net mvc 创建虚拟目录
浅薄的一些JAVA基础知识
【JS 逆向百例】网洛者反爬练习平台第一
springboot配置swagger2
160_Vue实战:路由模式,404,路由钩子
150_Vue实战:参数传递及重定向
140_Vue实战:路由嵌套