Что будет если попытаться обратиться к полю которого нет при подходе с рефлексией

«Что будет если попытаться обратиться к полю которого нет при подходе с рефлексией» — вопрос из категории Java, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При попытке обратиться к несуществующему полю через рефлексию будет выброшено исключение NoSuchFieldException.

Пример:

try {
    val field = SomeClass::class.java.getDeclaredField("nonExistingField")
    // ...
} catch (e: NoSuchFieldException) {
    // Обработка случая, когда поле не найдено
}

Важно:

  • Исключение возникает как для приватных, так и для публичных полей
  • Для проверки существования поля можно использовать getDeclaredFields() и искать поле в массиве
  • В отличие от обычного доступа, рефлексия не дает NullPointerException, а сразу бросает NoSuchFieldException