Java 如何检查类是否没有参数构造函数
我不想这样检查,因为它会引发异常Java 如何检查类是否没有参数构造函数,java,reflection,Java,Reflection,我不想这样检查,因为它会引发异常 还有其他方法吗?您可以获取所有的构造函数,并检查它们的参数数量,当您找到一个参数为0时停止 Object obj = new Object(); try { obj.getClass().getConstructor(); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) {
还有其他方法吗?您可以获取所有的
构造函数,并检查它们的参数数量,当您找到一个参数为0时停止
Object obj = new Object();
try {
obj.getClass().getConstructor();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
dosomething();
e.printStackTrace();
}
您可以创建一个循环类的构造函数的方法,并检查是否有没有arg构造函数
private boolean hasParameterlessConstructor(Class<?> clazz) {
return Stream.of(clazz.getConstructors())
.anyMatch((c) -> c.getParameterCount() == 0);
}
您可以使用getConstructors()
,但它只会检查可见的构造函数。因此,以下内容将返回false
class A { }
hasNoArgConstructor(A.class);
布尔hasNoArgConstructor(类klass){
for(构造函数c:klass.getConstructors()){
if(c.getParameterTypes().length==0)返回true;
}
返回false;
}
B类{
私有B(){}
}
hasNoArgConstructor(B.class);
如果您使用的是Spring,则可以使用:
构造函数类没有getParameterCount()方法:@gerrytan。您可以使用getParameterTypes
检查返回数组的大小。为什么会出现异常恐惧症?
boolean hasNoArgConstructor(Class<?> klass) {
for(Constructor c : klass.getDeclaredConstructors()) {
if(c.getParameterTypes().length == 0) return true;
}
return false;
}
class A { }
hasNoArgConstructor(A.class);
boolean hasNoArgConstructor(Class<?> klass) {
for(Constructor c : klass.getConstructors()) {
if(c.getParameterTypes().length == 0) return true;
}
return false;
}
class B {
private B() {}
}
hasNoArgConstructor(B.class);
ClassUtils.hasConstructor(obj.getClass());