这属于反射的内容,这里的源代码只是反编译
Constructor
得到的构造方法不完整源代码
代码:
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
/**
* 反编译一个类的Constructor
*/
/**
* public class Vip {
* int no;
* String name;
* boolean gender;
*
* public Vip() {
* }
*
* public Vip(int no){
* this.no = no;
* }
*
* public Vip(int no, String name) {
* this.no = no;
* this.name = name;
* }
*
* public Vip(int no, String name, boolean gender) {
* this.no = no;
* this.name = name;
* this.gender = gender;
* }
* }
*/
public class ReflectTest11 {
public static void main(String[] args) {
StringBuilder s = new StringBuilder();
try {
// Class c = Class.forName("com.bjpowernode.javase.bean.Vip");
Class c = Class.forName("java.lang.String");
Object obj = c.newInstance();
s.append(Modifier.toString(c.getModifiers()));
s.append(" class ");
s.append(c.getSimpleName());
s.append(" {\n");
Constructor[] constructors = c.getDeclaredConstructors();
// System.out.println(constructors.length); 4
// 拼接构造方法
for (Constructor cc : constructors){
s.append("\t");
s.append(Modifier.toString(cc.getModifiers()));
s.append(" ");
s.append(c.getSimpleName());
s.append("(");
// 拼接参数
Class[] parameterTypes = cc.getParameterTypes();
for (Class ccc : parameterTypes){
s.append(ccc.getSimpleName());
s.append(",");
}
s.append(") {\n");
s.append("\t}\n");
}
s.append("}");
System.out.println(s);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
}
}
运行结果:
public final class String {
public String(byte[],) {
}
public String(byte[],int,int,) {
}
public String(byte[],Charset,) {
}
public String(byte[],String,) {
}
public String(byte[],int,int,Charset,) {
}
String(char[],int,int,Void,) {
}
String(AbstractStringBuilder,Void,) {
}
public String(StringBuilder,) {
}
public String(StringBuffer,) {
}
String(byte[],byte,) {
}
public String(char[],int,int,) {
}
public String(char[],) {
}
public String(String,) {
}
public String() {
}
public String(byte[],int,int,String,) {
}
public String(byte[],int,) {
}
public String(byte[],int,int,int,) {
}
public String(int[],int,int,) {
}
}
PS:大概写一下,存在较多Bug。
原文:https://www.cnblogs.com/yerun/p/12713083.html