如何检查类是否没有参数构造函数

2022-09-04 01:20:04
    Object obj = new Object();
    try {
        obj.getClass().getConstructor();
    } catch (SecurityException e) {
        e.printStackTrace();
    } catch (NoSuchMethodException e) {
        dosomething();          
        e.printStackTrace();
    }

我不想像这样检查,因为它会引发异常。

还有别的方法吗?


答案 1

您可以获取所有 s 并检查其参数数,当找到一个具有 0 的参数时停止。Constructor

private boolean hasParameterlessPublicConstructor(Class<?> clazz) {
    for (Constructor<?> constructor : clazz.getConstructors()) {
        // In Java 7-, use getParameterTypes and check the length of the array returned
        if (constructor.getParameterCount() == 0) { 
            return true;
        }
    }
    return false;
}

您必须用于非公共构造函数。getDeclaredConstructors()

用 重写了 .Stream

private boolean hasParameterlessConstructor(Class<?> clazz) {
    return Stream.of(clazz.getConstructors())
                 .anyMatch((c) -> c.getParameterCount() == 0);
}

答案 2

如果你正在使用Spring,你可以使用ClassUtils.hasConstructor()

ClassUtils.hasConstructor(obj.getClass());