What is the difference between getDeclaredConstructors and getConstructors in the Class API?

前端 未结 4 1471
遥遥无期
遥遥无期 2021-01-30 19:50

I notice that in the Java Reflection API there are two different methods for invoking constructors: the getDeclaredConstructors/getConstructors method.

4条回答
  •  余生分开走
    2021-01-30 20:37

    getDeclaredConstructors (when you want all the constructors)

    Returns an array of Constructor objects reflecting all the constructors declared by the class represented by this Class object. These are public, protected, default (package) access, and private constructors.

    getConstructors (when you want only public constructors)

    Returns an array containing Constructor objects reflecting all the public constructors of the class represented by this Class object.

    So, looking at the docs for both of them, I think a difference is that getConstructors returns only public constructors while getDeclaredConstructors returns all the constructors (public, protected, default (package) access, and private)

    So, it's easy if you need only the public constructors then use getConstructors. Otherwise, if you need all the constructors (disregarding the access-modifier of the constructor) then use getDeclaredConstructors.

提交回复
热议问题