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() + "{\n");//把class对象的类加入到sb Field[] Arr_Field = clazz.getDeclaredFields(); //获取到class对象中各个属性(返回数组) for (Field f : Arr_Field) { sb.append("\t"); //为了美观 加一个分隔符哈 sb.append(Modifier.toString(f.getModifiers())); //将属性的修饰符添加到 sb if (!f.getType().getSimpleName().equals("")) { //如果属性类型名(不带包名) 为 "" 空 sb.append(f.getType().getSimpleName() + " "); //将属性的类型名(不带包名)添加到sb } sb.append(f.getName() + "\n"); //将属性名添加到sb } } catch (Exception e) { e.printStackTrace(); } sb.append("}"); System.out.println(sb); //打印即可.. } }
原文:https://www.cnblogs.com/bi-hu/p/14735502.html