JavaRush /مدونة جافا /Random-AR /10 نصائح لتجاوز طريقة toString() في Java (الجزء الأول)
Ku6ep
مستوى

10 نصائح لتجاوز طريقة toString() في Java (الجزء الأول)

نشرت في المجموعة
10 نصائح لتجاوز طريقة toString() في Java - ToStringBuilder Netbeans Eclipse 10 نصائح لتجاوز طريقة toString() في Java (الجزء الأول) - 1

طريقة جافا إلى سلسلة

toStringيتم استخدام الطريقة في Java لتوفير معلومات واضحة وكافية حول كائن ( Object) في نموذج يمكن قراءته بواسطة الإنسان. toStringيمكن أن يساعد تجاوز الطريقة الصحيحة في تسجيل برنامج Java وتصحيح أخطائه من خلال توفير معلومات قيمة ومهمة. نظرًا لأنه toString()تم تعريفه في java.lang.Objectفئة وأن تطبيقه الافتراضي لا يوفر الكثير من المعلومات، فمن الأفضل دائمًا تجاوز هذه الطريقة في فئة تابعة. في الواقع، إذا كنت تقوم بإنشاء فئة مهمة أو عامة من النوع Order، Tradeأو Employee، فتجاوز دائمًا يساوي و hashCode و CompareTo والأساليب toStringفي Java. بشكل افتراضي، ينتج التنفيذ toStringمخرجات في النموذج ، package.class@hashCodeعلى سبيل المثال، على سبيل المثال، ستطبع طريقة الفصل test.Country@18e2b22 حيث 18e2b22 هو رمز التجزئة للكائن بالنظام الست عشري، إذا قمت باستدعاء طريقة hashCode فسوف تُرجع 260943370 وهو المعادل العشري لـ 18e2b22. هذه المعلومات ليست مفيدة بشكل خاص عند البحث عن مشكلة. دعونا نلقي نظرة على مثال واقعي حيث تحتاج إلى العثور على مشكلة في اتصال الشبكة لديك، في حالة رغبتك في معرفة المضيف والمنفذ الذي يحاول نظامك الاتصال به وما إذا كان يتم طباعة المعلومات الافتراضية فقط أم لا ، فسيكون ذلك من المستحيل تخيل المشكلة الحقيقية، ولكن مع التنفيذ المتجاوز يمكنهم توفير معلومات مفيدة مثل اسم المضيف ورقم المنفذ. سنقدم في برنامج Java التعليمي هذا بعض النصائح حول تجاوز الطريقة باستخدام أمثلة التعليمات البرمجية. toString()toString()CountrySocketServerSockettoStringtoStringtoString

كيفية تجاوز طريقة toString في Java:

اطبع التاريخ المنسق (أي يوم/شهر/سنة) بدلاً من القيمة الأولية. يعد هذا تلميحًا مفيدًا جدًا عند تجاوز طريقة Java toString. لا يُخرج toString()الفصل العادي تاريخًا منسقًا ويتضمن الكثير من التفاصيل التي لا تكون مطلوبة دائمًا. java.util.Dateإذا كنت تستخدم DateFormat جزئيًا ، على سبيل المثال. dd-MM-yy في تطبيقك، فأنت بالتأكيد تريد رؤية هذا التنسيق بدلاً من التنسيق الافتراضي. لا يقوم IDE عادةً بإنشاء مخرجات منسقة Dateوهذا شيء ستحتاج إلى القيام به بنفسك، ولكنه يستحق ذلك. اقرأ كيفية طباعة التاريخ بتنسيق ddMMyy في Java للحصول على تفاصيل حول التنسيق Dateفي Java. يمكنك أيضًا استخدام فئة SimpleDataFormat أو مكتبة وقت Joda Date لهذا الغرض.

توثيق تنسيق toString

إذا لم تقم طريقتك toString()بإخراج البيانات كقيمة field=value، فمن الجيد توثيق تنسيق الإخراج toString، خاصة بالنسبة للكائنات المهمة مثل الموظف أو الطالب. على سبيل المثال، إذا قام أسلوب toString()الفصل Работник(Employee)بطباعة " John-101-Sales-9846387321 "، فمن الممارسات الجيدة تحديد التنسيق كـ "name-id-department-contact"، ولكن في نفس الوقت لا تسمح للعميل بالحصول على المعلومات من الطريقة toString()، يجب عليك دائمًا توفير الطرق المناسبة لاسترداد البيانات، مثل و getName()و وما إلى ذلك getId()، getContact()نظرًا لأن المعلومات التي تم الحصول عليها من toString()تمثيل الكائن هشة وعرضة للخطأ، لذلك يجب أن يكون لدى العميل دائمًا مسار نظيف للحصول على المعلومات معلومة.

استخدم StringBuilder لإنشاء مخرجات toString()

إذا كنت تكتب تعليمات برمجية لطريقة ما toString()في Java، فاستخدم StringBuilder لإضافة سمات فردية. إذا كنت تستخدم IDE مثل Eclipse أو Netbeans أو IntelliJ، فإن استخدام StringBuilderالطريقة and append()بدلاً من عامل التشغيل + للإنشاء toStringهو أيضًا الحل الأمثل. افتراضيًا، يتم إنشاء كل من Eclipse وNetbeans toStringباستخدام عامل التسلسل.

باستخدام التعليق التوضيحيOverride

يعد استخدام @Overrideتجاوز الطريقة في Java أحد أفضل الممارسات في اللغة. لكن هذا التلميح ليس مهمًا كما هو الحال في حالة تجاوز التابع والطرق equals()، compareTo()نظرًا لأن التحميل الزائد بدلاً من التجاوز يمكن أن يؤدي إلى حدوث أخطاء أكثر دقة يصعب حسابها. في أي حال، فمن الأفضل استخدام الشرح @Overrride.

طباعة محتويات مصفوفة بدلاً من طباعة كائن المصفوفة

المصفوفة عبارة عن كائن في Java ولكنها لا تتجاوز الطريقة، toStringوعندما تقوم بطباعة مصفوفة، فإن تنسيق الإخراج الافتراضي ليس مفيدًا جدًا لأننا نرغب في رؤية محتويات المصفوفة. بالمناسبة، هذا سبب آخر لتفضيل مصفوفة char[] على String لتخزين البيانات الحساسة مثل كلمة المرور. خذ الوقت الكافي لمعرفة ما إذا كانت طباعة محتويات المصفوفة تساعد عملائك أم لا، وإذا كان ذلك منطقيًا، فقم بطباعة محتويات المصفوفة بدلاً من الكائن نفسه. لأسباب تتعلق بالأداء، يفضل استخدام CollectionHashSet ArrayListأو HashSet بدلاً من ذلك Arrayلتخزين كائنات أخرى.

نصائح إضافية

بعض النصائح الإضافية حول تجاوز الطريقة toStringفي Java.
  1. طباعة المخرجات toStringفي أسطر متعددة أو في سطر واحد بناءً على طوله.

  2. قم بتضمين أسماء الفئات المؤهلة بالكامل في التمثيل toString، بمعنى آخر package.classلتجنب أي سوء فهم.

  3. يمكنك تخطي القيم الخالية أو إظهارها، لكن من الأفضل إظهارها. في بعض الأحيان تكون مفيدة لأنها تظهر الحقل الموجود nullأثناء بعض الأحداث، على سبيل المثال NullPointerException .

  4. استخدم تنسيق قيمة المفتاح، على سبيل المثال member.name=member.value، تدعم معظم بيئات التطوير المتكاملة هذا.

  5. قم بتضمين الأعضاء الموروثين إذا كنت تعتقد أنه يجب عليهم تقديم المعلومات الضرورية للفئة الموروثة.

  6. في بعض الأحيان يحتوي الكائن على العديد من المعلمات الاختيارية والمطلوبة، كما أظهرنا في مثال قالب Builder الخاص بنا ، عندما يكون من المستحيل تقريبًا طباعة جميع الحقول، في هذه الحالة يمكننا طباعة الحقول المطلوبة فقط، خاصة وأن لدينا حقول اختيارية.

تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION