এনাম ক্লাসটি সিরিয়ালাইজযোগ্য তাই এনামগুলির সাথে বস্তুটিকে সিরিয়ালাইজ করতে কোনও সমস্যা নেই। অন্য কেসটি হল যেখানে শ্রেণিতে java.util.Optal ক্লাসের ক্ষেত্র রয়েছে। এক্ষেত্রে নিম্নলিখিত ব্যতিক্রম নিক্ষেপ করা হয়: java.io.NotSerializableException: java.util.Optal
এই জাতীয় ক্লাসগুলি কীভাবে ডিল করবেন, কীভাবে তাদের সিরিয়াল করবেন? রিমোট ইজেবিতে বা আরএমআইয়ের মাধ্যমে এই জাতীয় অবজেক্টগুলি পাঠানো কি সম্ভব?
এটি উদাহরণ:
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()
এমন কিছু যদি সিরিয়ালাইজযোগ্য না হয়ে ফিরে আসে তবে কী হবে ?