首页 > 技术文章 > 反编译一个类的Constructor构造方法

Leeyoung888 2020-12-24 22:14 原文

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

则结果为:

推荐阅读