ماذا يعني <و> مثل الأدوات المماثلة ؟
-
19-08-2019 - |
سؤال
في جافا 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> يعني؟