Почему валидатор требует писать String через writeObject он чем-то лучше writeUTF при записи строк?
package com.javarush.task.task20.task2011;
import java.io.*;
/*
Externalizable для апартаментов
*/
public class Solution {
public static class Apartment implements Externalizable {
private String address;
private int year;
/**
* Mandatory public no-arg constructor.
*/
public Apartment() {
super();
}
public Apartment(String addr, int y) {
address = addr;
year = y;
}
/**
* Prints out the fields used for testing!
*/
public String toString() {
return ("Address: " + address + "\n" + "Year: " + year);
}
@Override
public void writeExternal(ObjectOutput out) throws IOException {
out.writeUTF(this.address);
out.writeInt(this.year);
}
@Override
public void readExternal(ObjectInput in) throws IOException {
address = in.readUTF();
year = in.readInt();
}
}
public static void main(String[] args) {
Apartment apartment = new Apartment("Lenina str, 248", 2001);
Apartment apartment1 = null;
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try (ObjectOutputStream ous = new ObjectOutputStream(byteArrayOutputStream)) {
ous.writeObject(apartment);
} catch (IOException e) {
e.printStackTrace();
}
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
try (ObjectInputStream ois = new ObjectInputStream(byteArrayInputStream)){
apartment1 = (Apartment) ois.readObject();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println(apartment1);
}
}