سؤال

في جافا 1.4.2, ، صف دراسي java.math.BigInteger ينفذ واجهات Comparable, Serializable.

في جافا 1.5.0, ، صف دراسي java.math.BigInteger ينفذ واجهات Serializable, Comparable<BigInteger>.

هذا مجرد مثال لمساعدتي في السؤال < و >. ما أتساءل عنه حقًا هو < و > أمور.

سؤالي هو ثلاثة أضعاف:

  • ماذا يكون ال <BigInteger> جزء من implements بيان يعني؟
  • ما الذي يسمى هذا الجملة؟
  • وماذا يفعل؟

ملاحظة: من الصعب حقًا Google < و > ومن المستحيل البحث عن ذلك < و > في المقام الأول.

شكرًا!

هل كانت مفيدة؟

المحلول

إقرأ ال جافا جيرلكس البرنامج التعليمي. الشيء بين قوسين الزاوية هو معلمة نوع - قابلة للمقارنة فئة عامة ، وفي هذه الحالة تعني قوسين الزاوية أن الفئة مماثلة للمشاركين الآخرين.

لمزيد من التوضيح في هذه الحالة ، ألق نظرة على Javadocs للمقارنة في 1.5. لاحظ أنه يُعلن أنه Comparable<T>, ، وهذا compareTo الطريقة تأخذ حجة من النوع T. T عبارة عن معلمة نوع يتم "ملؤها" عند استخدام الواجهة. وهكذا في هذه الحالة ، أعلن أنك تنفذ Comparable<BigInteger> يعني أنه يجب أن يكون لديك compareTo(BigInteger o) طريقة. قد تنفذ فئة أخرى Comparable<String> وهذا يعني أنه سيتعين عليه تنفيذ ملف compareTo(String o) طريقة.

نأمل أن تتمكن من رؤية الاستفادة من المقتطف أعلاه. في 1.4 ، توقيع compareTo يمكن أن تأخذ فقط Object نظرًا لأن جميع أنواع الفصول التي تم تنفيذها قابلة للمقارنة ولم تكن هناك طريقة لمعرفة ما هو مطلوب بالضبط. ومع ذلك ، يمكنك تحديد أنك قابلة للمقارنة فيما يتعلق بفئة معينة ، ثم كتابة طريقة مقارنة أكثر تحديدًا لا تأخذ هذه الفئة إلا كمعلمة.

الفوائد هنا ذات شقين. أولاً ، لا تحتاج إلى القيام instanceof تحقق ويلقي في تطبيق الطريقة. ثانياً ، يمكن للمترجم أن يقوم بالكثير من الفحص في وقت الترجمة - لا يمكنك تمرير سلسلة عن طريق الخطأ إلى شيء ينفذ Comparable<BigInteger>, ، لأن الأنواع لا تتطابق. من الأفضل بكثير أن يكون المترجم قادرًا على الإشارة إلى ذلك لك ، بدلاً من أن يكون لهذا السبب استثناءً من وقت التشغيل كما كان سيحدث عمومًا في الكود غير العام.

نصائح أخرى

أنا متأكد من أنها عامة

http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html

سألت شيئًا مشابهًا (C#) لديه معلومات مفيدة هناك ما هي الطريقةu003CClassName> يعني؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top