Java Reflection APIには、コンストラクタを呼び出すための2つの異なるメソッドがあります(getDeclaredConstructors
/getConstructors
メソッド)。 Javaのドキュメントは若干異なりますが(getDeclaredConstructors
は、publicではなくすべてのコンストラクタを返すことを暗示しているようです)、なぜAPIがこれら2つの異なるメソッドを明示的にサポートするのかは不明です。Class APIのgetDeclaredConstructorsとgetConstructorsの違いは何ですか?
もっと重要なのは、クラスを動的に呼び出す場合、いつ別のメソッドより優先される方法はありますか?たとえば、プライベートコンストラクタにアクセスする目的は何ですか?
を使用し、constructor.setAccessible(true)を使用すると、非公開のコンストラクタを反映して呼び出すことができます。 – MeBigFatGuy
この回答は正しいものの、少し注意が必要です。コンパイラーは、コンストラクターを明示的に定義していないクラスに対して、自動的にデフォルト(引数なし)パブリックコンストラクターを提供します。 'getConstructors'はこのデフォルトのコンストラクタを返しませんが、' getDeclaredConstructors'は返します。 – neXus