Java连载118-编译一个类(包括内部函数、方法、…
2020-05-27 16:01:35来源:博客园 阅读 ()
一、反编译一个类(包括内部函数、方法、类型、参数)
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
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
原文链接:https://www.cnblogs.com/ruigege0000/p/12969809.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:java覆盖
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash