Как заменить setAccessible(true) для приватных полей на PropertyDescriptor
Многие разработчики используют рефлексию (setAccessible(true)) для изменения приватных полей, но начиная с Java 9 это уже не так просто. Доступ к setAccessible(true) ограничен модульной системой, а с каждым новым релизом Java эта лазейка становится сложнее. Да и ломать инкапсуляцию — это очень плохая идея. 
Поэтому мы будем использовать...
PropertyDescriptor из пакета java.beans позволяет получить метод set для поля и безопасно вызывать его, не ломая рефлексию.
Почему лучше использовать PropertyDescriptor?
Не нарушает инкапсуляцию использует публичный сеттер вместо вмешательства в приватные поля.
Совместимо с модульной системой Java – не требует setAccessible(true), который ограничен в новых версиях.
Безопасно для будущих обновлений – код продолжит работать даже после изменений в рефлексии.
Еще больше статей на канале для Java разработчиков и тимлидов https://t.me/madteamleadchannel