الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما معنى الـ Serialization

بدأه ahmadoovic في 5 أبريل 2012 · 5 رد · 1,766 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي سؤال اتمنى ان اجد الجواب عليه ما معنى الـ Serialization في لغة الجافا وما هي فائدتها ومتى نستخدمها ولماذا

كما اتمنى ان أفهم شرح السطرين التاليين من الكود وجزاكم الله كل خير

public class Employee implements Serializable {

	private static final long serialVersionUID = 1L;
#2

تفضل موضوع سابق في المنتدى

/index.php?showtopic=124637

#4

شكرا للردود مع انه الشروحات صراحة لم تكن واضحة ولم تشرح المعزى والهدف الحقيقي من الـ Serialization

ثم يبقى شرح هذا السطر

 private static final long serialVersionUID = 1L

يعني ما هي الـ 1L

#5

السلام عليكم

بصفة عامة جعل اي class يعمل implements لل Serializable

لاستغلالها في امكانية حفظ اوبجكت من هذا الكلاص بما فيه من معلومات وامكانية استرجاعها من جديد

اضافة الى امكانية نقل هذا الاوبجكت في الشبكة عن طرق ال Socket مثلا

اليك الكود التالي عند تشغيله للمرة الاولى انزع commentaire وشغله المرة الثانية بارجاع commentaire

public class person implements Serializable{
	String Nom ;
	String Prenom ;
	public person(String Nom ,String Prenom ) 
	{
		this.Nom= Nom;
		this.Prenom = Prenom;

	}
		@Override
	public String toString() {
		return "person [Nom=" + Nom + ", Prenom=" + Prenom + "]";
	}

		public static void main(String []args) throws FileNotFoundException, IOException, ClassNotFoundException{

			//person p = new person("test", "test");
			//ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("person.srz"));
			ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.srz"));
			//out.writeObject(p);
			person p2 = (person)in.readObject();
			System.out.println(p2);



		}


}

بالنسبة private static final long serialVersionUID = 1L

static هنا تعني امكانية الوصول الى المتعير serialVersionUID من دون عمل اوبجكت للكلاص الحاوي

ويكون ذلك عن طريق اسم الكلاص متبوع ب نقطة متبوع ب اسم المتعير كما في Math.PI

final بمعنى ثابت

وبالنسبة لل 1L حسب علمي اذا كان قيمة المتغير تفوق ما يقدر النوع Int على استيعابه يلزم اظافة L

اي ان في حالتك هذي وحسب علمي بامكانك نزع L

بالتوفيق وانتظر رد الاحوة

1
#6
ahmadoovic كتب:

شكرا للردود مع انه الشروحات صراحة لم تكن واضحة ولم تشرح المعزى والهدف الحقيقي من الـ Serialization

ثم يبقى شرح هذا السطر

 private static final long serialVersionUID = 1L

يعني ما هي الـ 1L

بالنسبه لـ serialVersionUID

http://www.xyzws.com/Javafaq/what-is-the-serialversionuid-in-java-classes/209

اما بالنسبه للـ 1L فقيمة الرقم واحد تعنى integer لكنك تريد ان تخزنها فى long فتقوم باضافه L بعد الرقم لتوضح للكومبيلر ان هذا الرقم long وليس integer

1

Software Developer
Mahmoudkelany.com


 

مواضيع مشابهة