无参数构造函数验证。 Java

Parameterless constructor validation. Java

如何检查 class 中是否存在无参数构造函数?

我试过了:

        if (classToCheck.getConstructor() != null) {
            //Yes, there is one.
        } else {
            //No, there isn't one.
        }

但是 classToCheck.getConstructor() 总是 returns 正确。

我做错了什么?

编辑。

    private boolean hasNoArgConstructor(Class classToCheck) {
    try {

        if (classToCheck.getConstructor() != null) {
            return true;
        }
    } catch (NoSuchMethodException e) {
        System.out.println("Error");
    }

    return false;
}

因此,方法的主要思想是如果 class 中有一个不带参数的构造函数,则方法为真。

请记住,如果您不编写任何显式构造函数,编译器将隐式地为您提供一个无参数构造函数。

所以 : class 没有任何构造函数 ==> 在编译后变成一个 class 有一个没有参数的构造函数。

您可以使用此代码:

if(Arrays.stream(classToCheck.class.getConstructors()).filter(constructor -> constructor.getParameterCount() == 0).count() == 1 )
    System.out.println("exists");
else 
    System.out.println("not exists");

只是不要忘记 getConstructors() 只查找 public 构造函数!