如何才能只获得java类的受保护构造函数和公共构造函数



我可以使用Java反射获取所有构造函数(私有、受保护和公共):

public Constructor<?>[] getDeclaredConstructors();

如何只获取java类的受保护构造函数和公共构造函数?

getConstructors()返回公共构造函数。要获得受保护的构造函数,您必须使用getDeclaredConstructors(),然后对数组进行迭代,并检查构造函数是否受保护。

这是代码示例:

for (Constructor c : clazz.getDeclaredConstructors()) {
    if (Modifier.isProtected(c.getModifiers())) {
       // this constructor is protected
    }
}

使用java.lang.reflect.Modifier;检查修饰符(即:public、protected、public final等):

    Class<?> c = Class.forName("ClassName");
    Constructor[] allConstructors = c.getDeclaredConstructors();
    for (Constructor m : allConstructors) {
        String modifier = Modifier.toString(m.getModifiers());
        System.out.println(modifier);
     }

最新更新