• Java连载115-利用Class的某些方法进行反编译


    一、我们介绍几个函数用于反编译一个类​

    package com.bjpowernode.java_learning;
    
    ​
    
    public class D115_1_User {
    
      private String id;
    
      public int age;
    
      protected String addr;
    
      boolean sex;
    
    }
    package com.bjpowernode.java_learning;
    
    import java.lang.reflect.Field;
    
    import java.lang.reflect.Modifier;
    
    ​
    
    public class D115_2_Reflect {
    
      public static void main(String[] args) throws Exception {
    
        //获取整个类
    
        Class c = D115_1_User.class;
    
       
    
        //获取属性
    
        //获取所有的public修饰的属性
    
    //    Field[] fs = c.getFields();
    
    //    System.out.println(fs.length);
    
    //    System.out.println(fs[0].getName());
    
       
    
       
    
        //获取所有的属性
    
        Field[] fs =c.getDeclaredFields();
    
        for(Field field:fs) {
    
            int i = field.getModifiers();
    
            //getModifiers是用来显示修饰符的
    
            String strModifier = Modifier.toString(i);
    
            System.out.println(i);
    
            System.out.println(strModifier);
    
            //Modifier.toString()方法传入数字用于解释是哪种修饰符
    
           
    
          Class type = field.getType();
    
          System.out.println(type.getName());//类的名字
    
          System.out.println(type.getSimpleName());//类的简易名字
    
          System.out.println(field.getName());//域的名字
    
          System.out.println("-----------");
    
        }
    
       
    
        StringBuffer  sb = new StringBuffer();
    
        sb.append(Modifier.toString(c.getModifiers())+" class "+c.getSimpleName() + "{
    ");
    
        for(Field field:fs) {
    
          sb.append("	");
    
          sb.append(Modifier.toString(field.getModifiers())+" ");
    
          sb.append(field.getType().getSimpleName() + " ");
    
          sb.append(field.getName()+";
    ");
    
        }
    
        sb.append("}");
    
        System.out.println(sb);
    
       
    
      }
    
    ​
    
    }

    二、源码:

    D115_1_User.java

    D115_2_Reflect.java

    https://github.com/ruigege66/Java/blob/master/D115_1_User.java

    https://github.com/ruigege66/Java/blob/master/D115_2_Reflect.java

    2.CSDN:https://blog.csdn.net/weixin_44630050

    3.博客园:https://www.cnblogs.com/ruigege0000/

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

     

  • 相关阅读:
    费马定理
    JAVA大数模板
    扩展KMP模板
    KMP算法模板
    2018暑假遗留题目
    线段树模板(含区间最大(小)值)
    [USACO18OPEN]Out of Sorts G
    几道背包题
    两个有关素数的算法
    German Collegiate Programming Contest 2015 F. Divisions
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/12892369.html
Copyright © 2020-2023  润新知