1. 程式人生 > 實用技巧 >反編譯一個類的Constructor構造方法

反編譯一個類的Constructor構造方法

 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());

則結果為: