1 package Reflect; 2 3 import java.lang.reflect.Constructor; 4 import java.lang.reflect.Modifier; 5 6 /* 7 * 反编译一个类的Constructor构造方法 8 */ 9 public class ReflectTest11 { 10 11 public static void main(String[] args) throws Exception{ 12 StringBuilder s=new StringBuilder(); 13 Class vipClass=Class.forName("bean.Vip"); 14 s.append(Modifier.toString(vipClass.getModifiers()));//获取并追加修饰符 15 s.append(" class "); 16 s.append(vipClass.getSimpleName()); //获取并追加类名 17 s.append("{\n"); 18 19 //拼接构造方法 20 Constructor[] constructors=vipClass.getDeclaredConstructors(); 21 for(Constructor constructor :constructors){ 22 s.append("\t"); 23 s.append(Modifier.toString(constructor.getModifiers())); 24 s.append(" "); 26 s.append("("); 27 Class[] parameterTypes=constructor.getParameterTypes(); 28 for(Class parameterType:parameterTypes){ 29 s.append(parameterType.getSimpleName()); 30 s.append(","); 31 } 32 s.deleteCharAt(s.length()-1); 33 s.append("){\n"); 34 } 35 36 s.append("}"); 37 System.out.println(s); 38 } 39 40 }
运行结果:
注:getName()与getSimpleName()的区别
getName: 类的相对路径 + 类名
getSimpleName: 类名
若将
25 s.append(vipClass.getSimpleName());
改为:
s.append(vipClass.getName());
则结果为: