反編譯一個類的Constructor構造方法
阿新 • • 發佈:2020-12-25
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(); 13Class 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());
則結果為: