冀教网 - 河北教师网站 - 专注于冀教版课本资源

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 350|回复: 0

Java连载119-反编译类的某个方法已经构造方法

[复制链接]

4万

主题

4万

帖子

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
124999
发表于 2020-6-1 08:53 | 显示全部楼层 |阅读模式
一、获取某个特定的方法,通过反射机制。
  1. 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);  }}
复制代码
我的关键词 Java连载119-反编译类的某个方法已经构造方法  新闻资讯 1707435-20200601001116102-1131242242


通过放射机制,我们模糊的执行了某个类的方法,相比之前的直接创建一个对象更加灵活。
二、反编译某个类的所有构造方法
我们先分别演示单个函数的修复符、构造方法名,然后通过StringBuffer来写出所有的构造方法。

[code]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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|冀教网 - 河北教师网站 - 专注于冀教版课本资源  

GMT+8, 2020-7-7 14:46 , Processed in 0.341867 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表