Below is a complete example of a class (Invoice) that implements java.io.Externalizable. Notice how the class provides a default public constructor required by java.io.Externalizable and how it implements methods readObject() and writeObject():
/** * Invoice (cached value). */ public final class Invoice implements Externalizable { private int invoiceID; private Date invoiceDate = null; private int invoiceNumber; private int customerID; public Invoice(final int invoiceID, final int invoiceNumber, final Date invoiceDate, int customerID) { this.invoiceID = invoiceID; this.invoiceNumber = invoiceNumber; this.invoiceDate = (Date) invoiceDate.clone(); this.customerID = customerID; } /** * No-argument constructor required by {@link Externalizable}. */ public Invoice() { } public int getInvoiceID() { return invoiceID; } public Date getInvoiceDate() { return (Date) invoiceDate.clone(); } public void setInvoiceDate(final Date invoiceDate) { this.invoiceDate = (Date) invoiceDate.clone(); } public int getInvoiceNumber() { return invoiceNumber; } public void setInvoiceNumber(final int invoiceNumber) { this.invoiceNumber = invoiceNumber; } public void writeExternal(final ObjectOutput out) throws IOException { out.writeObject(invoiceDate); out.writeInt(invoiceID); out.writeInt(invoiceNumber); out.writeInt(customerID); } public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException { invoiceDate = (Date) in.readObject(); invoiceID = in.readInt(); invoiceNumber = in.readInt(); customerID = in.readInt(); } public boolean equals(final Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; final Invoice invoice = (Invoice) o; if (invoiceID != invoice.invoiceID) return false; if (invoiceNumber != invoice.invoiceNumber) return false; if (customerID != invoice.customerID) return false; if (invoiceDate != null ? !invoiceDate.equals(invoice.invoiceDate) : invoice.invoiceDate != null) return false; return true; } public int hashCode() { int result = invoiceID; result = 31 * result + (invoiceDate != null ? invoiceDate.hashCode() : 0); result = 31 * result + invoiceNumber; result = 31 * result + customerID; return result; } }
Labels
(None)
