通过Java反射获取构造函数参数

4
我将使用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
2个回答

7

您已经拥有了类型,但无法获取名称(因为它们不作为字节码的一部分被保留下来)。


方法也是一样的吗?方法名称无法获取吗? - user2023359
2
@user2023359:方法名称 - 是的。参数名称 - 不是。 - NPE

1

在JAVA中,名称无法通过反射获得。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接