Какво е екстернализация в Java и кога да се използва?



Екстернализацията в Java се използва за запазване на клас Java в байтов поток. Клас, който трябва да бъде екстернализиран, трябва да реализира интерфейс Externalizable.

Java сериализация не е много ефективен. Акосериализирате подути обекти с много атрибути и свойства, не искате да сериализирате. Това е мястото, където Externalization в Java влиза в картината. Тази статия ще ви помогне да разберете как работи екстернализацията.

Нека да започнем!





Какво е екстернализация в Java?

Екстернализацията в Java се използва винаги, когато трябва да персонализирате сериализация механизъм. Ако клас реализира интерфейс за екстернализация, тогава сериализацията на обекта ще се извърши с помощта на метода writeExternal () . Когато обект на Externalizable се реконструира в края на получателя, ще бъде създаден екземпляр с помощта на конструктор no-argument и този метод се извиква readExternal ().

Това основно служи за целта на персонализирана сериализация, където можете да решите какво да съхранявате в поток.



Кога използвате Externalization?

Ако искате да сериализирате само част от обект , тогава екстернализацията е най-добрият вариант. Ще трябва да сериализирате само задължителните полета на обект.

Какво представлява интерфейсът за екстернализация?

Ако искате да контролирате процеса на четене и запис на обектите по време на процеса на сериализация и десериализация, трябва класът на обекта да изпълни интерфейса java.io.Екстернализируем . Само тогава можете да приложите свой собствен код, за да четете и записвате състоянията на обекта. Методите, readExternal () и writeExternal () се определят от Външно интерфейс .

хадооп администратор срещу хадооп разработчик

Нека разберем подробно тези методи.



readExternal (ObjectInput in)

Обектът на интерфейса изпълнява този метод, който помага за възстановяване на съдържанието му чрез извикване на методите наВход за данниза примитивни типове. Освен това се обаждаreadObjectза обекти, низове и масиви. Сега нека обсъдим как да приложим този метод readExternal.

Като това readExternal () метод отнема Въвеждане на обект , можете да използвате метода му, за да прочетете състоянията на обекта от основния поток на тези правила:

размер на масива в javascript
  • За примитивни типове можете да използвате readXXX () методи на Вход за данниинтерфейс. Те са именно, readBoolean (), readByte (), readInt (), readLong ().
  • Ако имате типове обекти като низове, масиви, всеки ваш персонализиран класове , използвате readObject () метод.

Пример:

public void readExternal (ObjectInput in) хвърля ClassNotFoundException, IOException {this.code = in.readInt () this.name = (String) in.readObject () this.password = (String) in.readObject () this.birthday = ( Дата) in.readObject ()}

Както можете да видите тук, десериализирах следните атрибути: код, име, парола и рожден ден.

writeExternal (ObjectOutput out)

Обектът на интерфейса изпълнява този метод, за да запази съдържанието чрез извикване на методите на DataOutput за примитивни стойности или извикване на writeObject метод на ObjectOutput за обекти, низове и масиви. Сега нека да разгледаме процеса на внедряване.

Като това writeExternal () метод отнемаObjectOutput, можете да използвате метода му, за да запишете състоянията на обекта в основния поток, следвайте тези правила:

  • За примитивни типове използвайте writeXXX () методи на DataOutputинтерфейс, като writeBoolean (), writeByte (), writeInt (), writeLong ()и т.н.
  • За типове обекти като , масиви , вашите потребителски класове, можете да използвате writeObject () метод.

Пример:

public void writeExternal (ObjectOutput out) хвърля IOException {out.writeInt (код) out.writeObject (name) // пише празна парола: out.writeObject ('') out.writeObject (рожден ден)}

Тук обаче можете да видите, че съм сериализирал следните атрибути: код, име, парола и рожден ден.

Сега, преминавайки към следващата тема в тази статия за Externalization in Java, нека обсъдим основните разлики между Externalization и Serialization в Java.

оператор за разделителна способност в c ++

Екстернализация срещу сериализация: Разлика между екстернализация и сериализация

Това е едно от най-често задаваните въпроси .

ПараметриЕкстернализацияСериализация
ПроцесИзползва процес на персонализирана сериализацияИзползва процес на сериализация по подразбиране
UIDНяма нужда от UIDНуждае се от serialVersionUID
СъхранениеТрябва да съхранявате данните, които имат обектМожете да съхранявате обекта директно
ДостъпВъншният интерфейс осигурява пълен контрол на процеса на сериализация на приложението.
Няма такъв достъп

Надявам се, че вие ​​сте наясно с Externalization vs Serialization. Така че с това стигнахме до края на тази статия за „Екстернализация в Java“. Надявам се, че вие ​​сте наясно със споделените с вас теми.

Надявам се, че гореспоменатото съдържание се оказа полезно за подобряване на вашето знания. Продължавайте да четете, продължавайте да проучвате!

Също така проверете от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят. Курсът за обучение и сертифициране на Java J2EE и SOA на Edureka е предназначен за студенти и професионалисти, които искат да бъдат Java Developer. Курсът е предназначен да ви даде начален старт в програмирането на Java и да ви обучи както за основни, така и за разширени Java концепции, заедно с различни като Hibernate & Spring.