根据 class 文件反编译得到 Java 源代码
这属于反射的内容,这里的源代码只是反编译
Field
得到的成员变量不完整源代码
不常用
代码:
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
/**
* 根据class文件反编译得到java源代码
*/
public class ReflectFieldTest {
public static void main(String[] args) {
StringBuffer s = new StringBuffer();
Class c = null;
Field[] fields = {};
try {
// c = Class.forName("com.bjpowernode.javase.reflect.Student");
c = Class.forName("java.lang.Integer"); // 拿到某个类的字节码文件
fields = c.getDeclaredFields();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
s.append(Modifier.toString(c.getModifiers()) + " class " + c.getSimpleName() + "{\n");
for (Field f : fields){
s.append("\t");
s.append(Modifier.toString(f.getModifiers()));
s.append(" ");
s.append(f.getType().getSimpleName());
s.append(" ");
s.append(f.getName());
s.append("\n");
}
s.append("}");
System.out.println(s);
}
}
运行结果:
public final class Integer{
public static final int MIN_VALUE
public static final int MAX_VALUE
public static final Class TYPE
static final char[] digits
static final byte[] DigitTens
static final byte[] DigitOnes
static final int[] sizeTable
private final int value
public static final int SIZE
public static final int BYTES
private static final long serialVersionUID
}
PS:无法得到属性具体的值