Java连载119-反编译类的某个方法已经构造方法
2020-06-01 16:05:01来源:博客园 阅读 ()
一、获取某个特定的方法,通过?反射机制。
package com.bjpowernode.java_learning; import java.lang.reflect.*; ? public class D119_1_ReflectMethodOfSpecialClass { public static void main(String[] args) throws Exception{ /** * D118_CustomerService cs = new D118_CustomerService(); * boolean isSucess = cs.login("admin","123"); * * 接下来通过反射的方法,来获取某一个类的某个函数 * */ //1.获取类 Class c = Class.forName("com.bjpowernode.java_learning.D118_CustomerService"); //2.获取某个特定的方法 //通过:方法名+形参列表 Method m = c.getDeclaredMethod("login",String.class,String.class); //login是D118_CustomerSercice中存在的类 //通过反射机制执行login方法 Object o = c.newInstance(); //调用o对象的m方法,传递"admin","123"参数,方法的执行结果是retValue Object retValue = m.invoke(o,"admin","123"); //打印出来 System.out.println(retValue); ? } ? }
?通过放射机制,我们模糊的执行了某个类的方法,相比之前的直接创建一个?对象更加灵活。
二、反编译某个类的所有构造方法
我们先分别演示单个函数的修复符、构造方法名,然后通过StringBuffer来写出?所有的构造方法。?
package com.bjpowernode.java_learning; ? import java.lang.reflect.*; ? public class D119_2_DecompilationOfAllConstructer { public static void main(String[] args) throws Exception{ //1.获取一个类 Class c = Class.forName("java.lang.String"); //2.获取所有的构造方法 Constructor[] cs = c.getDeclaredConstructors(); for(Constructor con:cs) { //获取修饰符 System.out.println(Modifier.toString(con.getModifiers())); //获取构造方法名 System.out.println(c.getName()); //构造方法的形式参数列表 Class[] parameterTypes = con.getParameterTypes(); for(Class parameterType:parameterTypes) { System.out.println(parameterType.getSimpleName()); } System.out.println("================="); } //反编译 StringBuffer sb = new StringBuffer(); sb.append(Modifier.toString(c.getModifiers())+" class"+c.getSimpleName() + "{\n"); //构造方法 for(Constructor con:cs) { sb.append("\t"); sb.append(Modifier.toString(con.getModifiers()) + " "); sb.append(c.getSimpleName()+"("); Class[] parameterTypes = con.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); } ? }
三、源码:
D119_1_ReflectMethodOfSpecialClass.java
D119_2_DecompilationOfAllConstructer.java
https://github.com/ruigege66/Java/blob/master/D119_1_ReflectMethodOfSpecialClass.java
https://github.com/ruigege66/Java/blob/master/D119_2_DecompilationOfAllConstructer.java
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
原文链接:https://www.cnblogs.com/ruigege0000/p/13022608.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:class.getResourceAsStream获取结果为NULL idea配置问题
下一篇:Spring boot Sample 003之spring-boot-configuration-properties
- 国外程序员整理的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