反编译.class中的各属性代码

自己看注释!!!

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
/**
 * 2021年5月6日 15:45:10
 * 目的:反编译.class中的各属性代码
 * 学习: 获取.class文件中的属性 类名 、修饰符 、名
 *其他: 书上有笔记 烦死了 JavaSe !!! 希望能帮到要帮助的人 -- BiHu
 */
public class Main {
    public static void main(String[] args) {
        Class clazz = null;
        StringBuilder sb = new StringBuilder();
        try {
            clazz = Class.forName("pack.Person");       //获取到 .class 文件对象
            sb.append(Modifier.toString(clazz.getModifiers()) + " class " + clazz.getSimpleName() + "{
");//把class对象的类加入到sb
            Field[] Arr_Field = clazz.getDeclaredFields();  //获取到class对象中各个属性(返回数组)
            for (Field f : Arr_Field) {
                sb.append("	");        //为了美观 加一个分隔符哈
                sb.append(Modifier.toString(f.getModifiers()));   //将属性的修饰符添加到 sb
                if (!f.getType().getSimpleName().equals("")) {             //如果属性类型名(不带包名) 为 "" 空
                    sb.append(f.getType().getSimpleName() + " ");  //将属性的类型名(不带包名)添加到sb
                }
                sb.append(f.getName() + "
");          //将属性名添加到sb

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        sb.append("}");

        System.out.println(sb);         //打印即可..


    }
}

本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/14735502.html

原文地址:https://www.cnblogs.com/bi-hu/p/14735502.html