Методы getDeclaredXX()
существуют для манипулирования классами способами, которые не обязательно были предназначены создателем этих классов. Обратите внимание, что есть метод getDeclaredMethod()
, который позволяет вам вызывать приватные методы, и метод getDeclaredField()
, который позволяет вам получать / устанавливать приватные поля.
Я не совсем уверен в «законных» вариантах использования, но они, очевидно, полезны для выполнения определенных действий. Кроме того, это семейство методов возвращает только вещи, специально объявленные в классе, а не вещи, которые существуют в классе из-за суперкласса.
Доступ к приватному конструктору может быть полезен по тем же причинам, я полагаю.