CodeGym /مدونة جافا /Random-AR /طريقة جافا toString ().
John Squirrels
مستوى
San Francisco

طريقة جافا toString ().

نشرت في المجموعة
في كثير من الأحيان، أثناء إنشاء برنامج، من الضروري معرفة محتويات الكائن. لهذه الأغراض، تحدد فئة Java Object ، وهي فئة Java الأساسية في التسلسل الهرمي للفئة، طريقة toString() خاصة . تقوم بإرجاع سلسلة أحرف تصف الكائن. يُنتج التنفيذ الافتراضي لأسلوب toString() في Java مخرجات مثل هذا:
package.class@hashCode
على سبيل المثال ، toString ، الذي تم تعريفه في java.lang.Object يعطي رمز التجزئة للكائن في شكل سداسي عشري. هذا غالبًا ما لا يكون واضحًا ومفيدًا جدًا. لذلك، عند إنشاء فئة جديدة، من المعتاد تجاوز toString() بحيث تحتوي سلسلة الإرجاع على اسم الفئة وأسماء وقيم جميع المتغيرات. يمكن أن يساعد تجاوز طريقة toString بشكل صحيح في تسجيل برنامج Java وتصحيح أخطاءه، فهو يوفر معلومات قيمة ومهمة. ببساطة، يتم استخدام طريقة toString() في Java للحصول على كائن سلسلة يمثل قيمة كائن رقمي. وبعبارة أخرى، فإنه يحول رقما إلى سلسلة. إذا كانت الطريقة تستخدم نوع بيانات بسيط كوسيطة، فسيتم إرجاع كائن سلسلة يمثل قيمة نوع البيانات البسيط.

مثال على طريقة Java toString()

عادة، إذا قمت بإنشاء فئة، بالإضافة إلى طريقة toString() في Java، فإنك تحتاج إلى تجاوز أساليب يساوي و hashCode و CompareTo لمعرفة كيفية العمل مع كائناتها. ولكن الآن، دعونا نركز على toString . في معظم الحالات، يكون إرسال معلومات نصية حول كائن ما أمرًا بسيطًا للغاية. كل ما عليك فعله هو فهم ما يود المستخدم رؤيته بالضبط عند التسجيل. دعونا نعطي مثالا وننشئ فئة تصف نقطة على المستوى. وله إحداثيان: الإحداثيات X، الإحداثيات Y. وبطبيعة الحال، يجب أن يتم عرضها على الشاشة إذا سأل المستخدم "ما هذا الكائن" تمامًا مثل اسم الفئة نفسها. هذا ما سنوضحه في طريقة toString() التي تم تجاوزها . الآن نقوم بإنشاء الفئة نفسها، وحقولها (الإحداثيات)، والمنشئ، والحروف للحصول على الإحداثيات (بالتأكيد، من الممكن عدم إنشائها، ولكن من وجهة نظر الاستخدام الصحيح لـ OOP، فإن الحروف هي ممارسة جيدة). فقط للتوضيح، دعونا ننشئ أيضًا طريقة تنشئ نقطة جديدة - مجموع النقطتين الأخريين، ونتجاوز أيضًا طرق يساوي و hashCode .
public class Point implements Comparable<Point> {
   private final int coordinateX;
   private final int coordinateY;

   public Point(final int coordinateX, final int coordinateY) {
       this.coordinateX = coordinateX;
       this.coordinateY = coordinateY;
   }

   public int getX() {
       return coordinateX;
   }

   public int getY() {
       return coordinateY;
   }

   public Point sum(final Point that) {
       return new Point(coordinateX + that.coordinateX, coordinateY + that.coordinateY);
   }

// here we override toString with coordinates and class name
   @Override
   public String toString() {
       return "Point{"
               + "X: " + getX()
               + ", Y: " + getY()
               +  '}';
   }

   @Override
   public boolean equals(Object o) {
       if (o == this) {
           return true;
       }
       if (o == null || o.getClass() != this.getClass()) {
           return false;
       }

   @Override
   public int hashCode() {
       return coordinateX + coordinateY;

   }
الآن لنقم بإنشاء فئة اختبار وطريقة رئيسية. لدينا هنا نقطتان والثالثة، التي نحصل عليها من مجموع نقطتين. نطبق طريقة toString على هذه النقطة ونطبعها.
//toString() method demo
public class Test {
   public static void main(String[] args) {
       Point myPoint1 = new Point(5,7);
       Point myPoint2 = new Point(-2, 8);
       Point mySum = myPoint1.sum(myPoint2);
     //call toString explicitly
       System.out.println(mySum.toString());
   }
}
نتيجة عمل هذا البرنامج هي أدناه:
النقطة{X: 3، Y: 15}
لا تحتاج في الواقع إلى استدعاء الأسلوب toString بشكل صريح ، وفي أغلب الأحيان لا تفعل ذلك. لاستدعاء الأسلوب toString() ، ما عليك سوى تمرير الكائن المطلوب إلى System.out.println . لذلك سيبدو فصل الاختبار الخاص بنا كما يلي:
//toString method demo
public class Test {
   public static void main(String[] args) {
       Point myPoint1 = new Point(5,7);
       Point myPoint2 = new Point(-2, 8);
       Point mySum = myPoint1.sum(myPoint2);
       //call toString implicitly
       System.out.println(mySum);
   }
}
إخراج البرنامج هو نفسه كما كان من قبل. ماذا لو لم نتجاوز طريقة toString ، ولكننا نريد طباعة الكائن؟ في هذه الحالة، سيتم استدعاء أسلوب toString لفئة الكائن . في مثالنا، إذا قمنا بإزالة طريقة toString من فئة Point الخاصة بنا ، وتركنا كل شيء كما هو في فئة الاختبار، فسنحصل على النتيجة التالية:
نقطة @ 12
هنا لدينا رمز التجزئة للكائن بالنظام الست عشري.
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION