使用getConstructor()

时间:2018-12-15 17:17:41

标签: java reflection

我需要检查一个类的一些内容,其中之一是确保该类的构造函数不使用任何参数,并建议您使用getConstructor()

我已经在线检查过了,但是我很难理解它的执行方式。

你们能以任何方式帮助我吗?谢谢。

2 个答案:

答案 0 :(得分:0)

try {
      Constructor<?>[] ctors = MyClass.class.getConstructors();
      if (ctors.length == 0) {
        //no constructor returned means only implicit no arg constructor available
      }
      for (Constructor<?> c : ctors) {
        if (c.getParameterTypes().length == 0) {
          //explicit no arg constructor present 
        }
      }
    }
    catch (SecurityException e) {
      // TODO either LOG the exception or re-throw, but not both
    }

答案 1 :(得分:0)

您可以在构造函数对象上使用getParameterCount()。 下面是完成所需工作的通用方法代码:

private static boolean checkDefaultConstructor(Class<?> cl) {
  Constructor<?>[] cons = cl.getConstructors();
  boolean defaultConstructor = false;
  for (Constructor<?> con : cons) {
    if (con.getParameterCount() == 0)
      defaultConstructor = true;
  }
  return defaultConstructor;
}