package com.javase.reflect;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ResourceBundle;
/**
 * 反编译Method 这里我们暂时还不能获取方法体中的内容
 * 通过读取属性配置文件来对不同的类进行反编译
 */
public class ReflectMethodText02 {
    public static void main(String[] args) {
        //通过资源绑定器获取属性配置文件中的内容(属性配置文件dp.properties在IDEA中所处目录如下图)
        ResourceBundle bundle = ResourceBundle.getBundle("com\\javase\\bean\\dp");
        String className = bundle.getString("className");
        //创建一个字符串拼接对象
        StringBuilder s = new StringBuilder();
        try {
            //获取类
            Class randomClass = Class.forName(className);//random任意,随意 组合在一起randomClass任意类
            //获取类的修饰符 + " class " + 类名 + "{回车符号"
            s.append(Modifier.toString(randomClass.getModifiers()) + " class " + randomClass.getSimpleName() + "{\n");
            //获取类中的方法
            Method[] methods = randomClass.getDeclaredMethods();
            //遍历
            for (Method method : methods){
                //拼接制表符
                s.append("\t");
                //获取方法的修饰符
                s.append(Modifier.toString(method.getModifiers()));
                //添加空格
                s.append(" ");
                //获取方法的返回值类型
                s.append(method.getReturnType().getSimpleName());
                //添加空格
                s.append(" ");
                //获取方法名
                s.append(method.getName());
                //添加"("开始
                s.append("(");
                //获取参数列表数据类型
                Class[] parameterTypes = method.getParameterTypes();
                //如果获取的参数列表不为0就遍历
                if (parameterTypes.length != 0) {
                    //遍历
                    for (Class parameterType : parameterTypes) {
                        s.append(parameterType.getSimpleName());
                        s.append(",");
                    }
                    //删除最后一个","字符
                    s.deleteCharAt(s.length() - 1);
                }
                //添加"){}"结束
                s.append("){}\n");
            }
            //添加类的结尾
            s.append("}");
            //打印拼接好的字符串
            System.out.println(s);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
 
                                
属性配置文件dp.properties在IDEA中的目录结构

/*
程序运行结果:
public final class Integer{
     public static int numberOfLeadingZeros(int){}
     public static int numberOfTrailingZeros(int){}
     public static int bitCount(int){}
     public boolean equals(Object){}
     public static String toString(int){}
     public String toString(){}
     public static String toString(int,int){}
     public int hashCode(){}
     public static int hashCode(int){}
     public static int min(int,int){}
     public static int max(int,int){}
     public static int reverseBytes(int){}
     static int getChars(int,int,byte[]){}
     public volatile int compareTo(Object){}
     public int compareTo(Integer){}
     public byte byteValue(){}
     public short shortValue(){}
     public int intValue(){}
     public long longValue(){}
     public float floatValue(){}
     public double doubleValue(){}
     public static Integer valueOf(int){}
     public static Integer valueOf(String,int){}
     public static Integer valueOf(String){}
     public static String toHexString(int){}
     public static Integer decode(String){}
     public static int compare(int,int){}
     public volatile Object resolveConstantDesc(Lookup){}
     public Integer resolveConstantDesc(Lookup){}
     public Optional describeConstable(){}
     public static int reverse(int){}
     static int stringSize(int){}
     public static long toUnsignedLong(int){}
     public static int parseInt(String,int){}
     public static int parseInt(CharSequence,int,int,int){}
     public static int parseInt(String){}
     public static int sum(int,int){}
     public static int compareUnsigned(int,int){}
     private static String toStringUTF16(int,int){}
     public static String toUnsignedString(int,int){}
     public static String toUnsignedString(int){}
     private static String toUnsignedString0(int,int){}
     private static void formatUnsignedInt(int,int,byte[],int){}
     private static void formatUnsignedIntUTF16(int,int,byte[],int){}
     public static int parseUnsignedInt(String){}
     public static int parseUnsignedInt(CharSequence,int,int,int){}
     public static int parseUnsignedInt(String,int){}
     public static Integer getInteger(String,Integer){}
     public static Integer getInteger(String,int){}
     public static Integer getInteger(String){}
     public static String toOctalString(int){}
     public static String toBinaryString(int){}
     public static int divideUnsigned(int,int){}
     public static int remainderUnsigned(int,int){}
     public static int highestOneBit(int){}
     public static int lowestOneBit(int){}
     public static int rotateLeft(int,int){}
     public static int rotateRight(int,int){}
     public static int signum(int){}
 }
*/

















