Нет, это невозможно с BeanUtils.Но вы можете использовать собственные инструменты отражения Java, такие как:
public class BeanUtilTest {
public static void main(String[] args) throws ... {
MyBean bean = new MyBean();
Field field = bean.getClass().getDeclaredField("bar");
field.setAccessible(true);
System.out.println(field.get(bean));
}
public static class MyBean {
private final String bar = "foo";
}
}
Обратите внимание: доступ к закрытым полям с отражением - очень плохой стиль, и его следует делать только для тестов или если вы уверены, что другого пути нет.Если у вас нет возможности изменить источники класса, к которому вы пытаетесь обратиться, это может быть последним средством.Но учтите, что поведение может измениться в будущем (например, как обновление используемой вами библиотеки) и нарушить ваш код.
Редактировать: Если работают BeanUtils или PropertyUtils, этоозначает, что для этого свойства есть открытый метод получения, и вы должны использовать его вместо отражения.Использование PropertyUtils в закрытом поле без открытого геттера вызывает исключение NoSuchMethodException.