как работает java jaxb? - PullRequest
       1

как работает java jaxb?

5 голосов
/ 02 августа 2010

Просто любопытно, как работает jaxb, у меня есть аннотированный класс следующим образом:

@XmlRootElement(name = "MyJaxb")
Class MyJaxb
{
      @XmlElement
      protected String str;

      public void setStr(String str)
      {
           this.str = str;
      }
 }

Модификатор доступа поля str защищен, почему Jaxb все еще может маршалировать и отменять маршаллинг?

Ответы [ 2 ]

12 голосов
/ 02 августа 2010

Используется Отражение . Доступ к полю или методу protected или private можно получить с помощью API отражения (используя setAccessible(true) для соответствующего объекта Field или Method).

Помните - public, protected и private - это элементы управления видимость по умолчанию , не более того. Они не (и не могут) предотвратить доступ с помощью отражения.

0 голосов
/ 02 сентября 2010

Помимо ответа, что отражение может обходить проверки (что правильно), это также то, что нужно другим внутренним частям JDK, в частности сериализации и десериализации объектов по умолчанию. В целом это разрешено, потому что многие инструменты выигрывают от такого доступа. И, как правильно отметили другие, права доступа не являются реальными барьерами безопасности. Они призваны помочь программистам правильно проектировать абстракции, облегчить создание хороших проектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...