2013-03-25 72 views
2

我在Java中使用了Reflection。我可以請幫助獲取構造函數參數的名稱和值嗎?構造函數參數通過Java反射

這裏是我的代碼:

public String getConstructors(Class aClass) 
    { 
    StringBuilder ClassConstructors = new StringBuilder(); 
    Constructor[] Constructors = aClass.getConstructors(); 
    String separator = System.getProperty("line.separator"); 
    for (Constructor c: Constructors) 
    { 
     boolean isPublic = Modifier.isPublic(c.getModifiers()); 
     Class[] parameterTypes = c.getParameterTypes(); 
     for (Class pt : parameterTypes) 
     { 
      System.out.println(pt.getName()); 
      //Field[] Fields = pt.getDeclaredFields(); 
      //for (Field f : Fields) 
      //{ 
       //System.out.println(f.getType()); 
      //} 
     } 
    } 
    return ClassConstructors.toString(); 

}

,我測試具有以下參數的構造函數:

String Name, int Diameter 

System.out.println(pt.getName());行代碼正在打印出以下:

java.lang.String 
int 

是否可以獲取每個參數的類型和名稱?

+2

Java字節碼不包含參數的名稱 – anstarovoyt 2013-03-25 07:52:29

回答

6

您已經擁有這些類型,並且無法獲取名稱(因爲它們不是字節碼的一部分)。

+0

這與方法相同嗎?方法名稱不能被檢索? – user2023359 2013-03-25 08:14:45

+1

@ user2023359:方法名稱 - 是的。參數名稱 - 不。 – NPE 2013-03-25 08:15:42

1

名稱不能通過JAVA中的反射獲得。