码迷,mamicode.com
首页 > 编程语言 > 详细

Java连载118-编译一个类(包括内部函数、方法、类型、参数)

时间:2020-05-27 01:12:18      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:customers   形式   ===   span   ==   jpg   png   大数据   declare   

一、反编译一个类(包括内部函数、方法、类型、参数)

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.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

 技术图片

 

Java连载118-编译一个类(包括内部函数、方法、类型、参数)

标签:customers   形式   ===   span   ==   jpg   png   大数据   declare   

原文地址:https://www.cnblogs.com/ruigege0000/p/12969809.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!