Почему поля в «сериализуемом» классе должны быть временными или сериализуемыми? - PullRequest
0 голосов
/ 04 октября 2019

В нашем приложении для одного класса (который является Сериализуемым) эхолот жалуется - Поля в классе "Сериализуемый" должны быть либо временными, либо сериализуемыми. Этот класс не сериализован нигде в нашем приложении. Но я не уверен, почему он реализует сериализуемый, потому что этот класс был написан давно.

Согласно документу Sonar, поля в Serializable классе должны быть либо Serializable, либо временными, даже если класс никогда не сериализуется явноили десериализованный. Но я не нашел точной причины этого.

Не могли бы вы объяснить, почему это вредно, если поля в классе "Serializable" не являются переходными или сериализуемыми? если класс никогда не сериализован или десериализован явно, то какой здесь вред?

Я проходил через Поля в классе «Сериализуемый» должны быть либо временными, либо сериализуемыми , но я не нашелправильный ответ на мой вопрос. Я нашел нижеприведенное утверждение, но не очень хорошо понимал

Например, при загрузке большинство каркасов приложений J2EE сбрасывают объекты на диск, и предположительно Serializable объект с непереходными, не сериализуемыми членами данных может вызвать программувылетает и открывает дверь злоумышленникам. В общем случае ожидается, что класс Serializable выполнит свой контракт и не будет иметь неожиданного поведения при сериализации экземпляра.

Спасибо

1 Ответ

0 голосов
/ 04 октября 2019

Сериализация, преобразование объекта в поток байтов. Объект должен быть сериализуемым, а все его поля сериализуемыми, потому что процесс сериализации сериализует объект со всеми его полями, но если одно поле должно / не может быть сериализуемым, оно должно быть явно помечено как временное, поэтому оно будет игнорироваться. Если его не игнорировать (помечено как временное), то при сериализации будет выдано исключение типа NotSerializableException. Если ваши объекты класса не будут сериализованы в какой-то момент, нет необходимости реализовывать Serializable.

...