Enum class Serializable है इसलिए Enums के साथ ऑब्जेक्ट को सीरियल करने के लिए कोई समस्या नहीं है। दूसरा मामला यह है कि वर्ग में java.util.Optional वर्ग के क्षेत्र हैं। इस मामले में निम्नलिखित अपवाद फेंका गया है: java.io.NotSerializableException: java.util.Onional
इस तरह की कक्षाओं से कैसे निपटें, उन्हें कैसे सीरियल करें? क्या ऐसी वस्तुओं को दूरस्थ ईजेबी या आरएमआई के माध्यम से भेजना संभव है?
यह उदाहरण है:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Optional;
import org.junit.Test;
public class SerializationTest {
static class My implements Serializable {
private static final long serialVersionUID = 1L;
Optional<Integer> value = Optional.empty();
public void setValue(Integer i) {
this.i = Optional.of(i);
}
public Optional<Integer> getValue() {
return value;
}
}
//java.io.NotSerializableException is thrown
@Test
public void serialize() {
My my = new My();
byte[] bytes = toBytes(my);
}
public static <T extends Serializable> byte[] toBytes(T reportInfo) {
try (ByteArrayOutputStream bstream = new ByteArrayOutputStream()) {
try (ObjectOutputStream ostream = new ObjectOutputStream(bstream)) {
ostream.writeObject(reportInfo);
}
return bstream.toByteArray();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
NotSerializableException,
।
Optional
इसके रूप में चिह्नित किया गया थाSerializable
, तो क्या होगा यदिget()
कुछ ऐसा लौटाया जाए जो धारावाहिक न हो?