"హలో, అమిగో! నేను ఎల్లీ మీకు చెప్పినదానికి కొంచెం జోడించాలనుకుంటున్నాను."
కొన్నిసార్లు మీరు సీరియలైజేషన్ ప్రక్రియను నియంత్రించాలి. ఇక్కడ కొన్ని కారణాలు ఉన్నాయి:
1) ఒక వస్తువు సీరియలైజేషన్ కోసం సిద్ధంగా లేదు : దాని ప్రస్తుత అంతర్గత స్థితి మారుతున్న ప్రక్రియలో ఉంది.
2) ఆబ్జెక్ట్లో సీరియలైజ్ చేయలేని వస్తువులు ఉంటాయి, కానీ వాటిని సులభంగా సీరియల్గా మార్చగలిగే రూపంలోకి మార్చవచ్చు , ఉదా వాటిని బైట్ శ్రేణిగా లేదా మరేదైనా సేవ్ చేయండి.
3) ఆబ్జెక్ట్ దాని మొత్తం డేటాను ఒక యూనిట్గా డీరియలైజ్ చేయాలని మరియు/లేదా సీరియలైజేషన్కు ముందు దానిని ఎన్క్రిప్ట్ చేయాలని కోరుకుంటుంది.
మీరు సీరియలైజేషన్ను మాన్యువల్గా నిర్వహించడానికి అనేక కారణాలు ఉన్నాయి. కానీ మేము ప్రామాణిక సీరియలైజేషన్ అందించే అన్ని ప్రయోజనాలను కోల్పోకూడదనుకుంటున్నాము. అన్నింటికంటే, మన వస్తువు ఇతర వస్తువులను ఉపయోగించవచ్చు. కానీ మన వస్తువు సీరియలైజేషన్కు మద్దతు ఇవ్వకపోతే వాటిని సీరియల్ చేయలేరు.
ఈ పరిస్థితికి కూడా పరిష్కారం ఉంది: బాహ్యీకరించదగిన ఇంటర్ఫేస్. జావా యొక్క దూరదృష్టి గల సృష్టికర్తలకు మనం కృతజ్ఞతలు తెలియజేయాలి. సీరియలైజబుల్ ఇంటర్ఫేస్ని ఎక్స్టర్నలైజబుల్ ఇంటర్ఫేస్తో భర్తీ చేయండి మరియు మీ క్లాస్ సీరియలైజేషన్ ప్రాసెస్ను మాన్యువల్గా నిర్వహించగలదు.
ఎక్స్టర్నలైజబుల్ ఇంటర్ఫేస్లో రెండు పద్ధతులు ఉన్నాయి, వీటిని సీరియలైజబుల్ ఇంటర్ఫేస్ చేయదు, ఆబ్జెక్ట్ సీరియలైజ్ చేయబడినప్పుడు జావా మెషీన్ ద్వారా పిలువబడుతుంది. ఇది ఇలా కనిపిస్తుంది:
class Cat implements Externalizable
{
public String name;
public int age;
public int weight;
public void writeExternal(ObjectOutput out)
{
out.writeObject(name);
out.writeInt(age);
out.writeInt(weight);
}
public void readExternal(ObjectInput in)
{
name = (String) in.readObject();
age = in.readInt();
weight = in.readInt();
}
}
మీకు ఏదైనా గుర్తు చేస్తున్నారా?
"పవిత్ర మోలీ! మేము సీరియలైజేషన్ని పరిగణించే ముందు వస్తువులను సేవ్ చేయడానికి ప్రయత్నించాము."
"ఇది ప్రతిదీ సులభతరం చేస్తుంది: ప్రామాణిక సీరియలైజేషన్ తగినంతగా ఉంటే, మేము సీరియలైజ్ చేయగల ఇంటర్ఫేస్ను వారసత్వంగా పొందుతాము . అది సరిపోకపోతే, మేము బాహ్యీకరణను వారసత్వంగా పొందుతాము మరియు మా వస్తువును సేవ్ చేయడానికి/లోడ్ చేయడానికి మా స్వంత కోడ్ను వ్రాస్తాము."
"అయితే ఎక్స్టర్నలైజబుల్గా గుర్తించబడిన తరగతి సీరియలైజ్ చేయదగినదిగా పరిగణించబడుతుందా? మన సీరియలైజ్ చేయదగిన తరగతులకు సూచనలను "సురక్షితంగా" నిల్వ చేయడానికి అటువంటి తరగతిని ఉపయోగించవచ్చా?"
"అవును. ఒక తరగతి సీరియలైజబుల్ లేదా ఎక్స్టర్నలైజబుల్ని అమలు చేస్తే , అది సీరియలైజ్ చేయదగినదిగా పరిగణించబడుతుంది."
"ఇది సరైన పరిష్కారం. నాకు ఇది ఇష్టం."
"అది వినడానికి నేను సంతోషిస్తున్నాను. కానీ ఇందులో ఇంకా ఎక్కువ ఉంది... మీరు అన్ని సూక్ష్మ నైపుణ్యాల గురించి ప్రొఫెసర్ హాన్స్ని అడగాలి. అవి ఖచ్చితంగా ఉన్నాయి. అతను మీకు చదవడానికి ఏదైనా ఇవ్వాలనుకున్నాడు."
GO TO FULL VERSION