امتدادات للغة البرمجة جافا تمت اضافتها في JDK 1.5 اضافت خاصية امكانية اضافة مفهوم التجريد على الانماط
مثال الأنماط الحاوية مثل المجموعات وتصنيفاتها
List myIntList = new LinkedList(); myIntList.add(new Integer(0)); Integer x = (Integer) myIntList.iterator().next();
نلاحظ في السطر الثالث التحويل القسري
عادة يعلم المبرمج نوع البيانات التي سيتم وضعها في اللائحة لذلك فإن التحويل القسري مهم
ولكن كل ما يعرفه المترجم ان ال iteratorسيعيد يرجع غرض من نمط Object
التحويل القسري مهم لضمان عملية ربط المتحول بالنمط Integer تنميطا امنا
لكن التحويل القسري يؤدي الى نوع من الفوضى والبلبلة حيث انه من المحتمل ان يؤدي الى اخطاء في زمن التنفيذ بسبب خطأ من المبرمج .
ماذا اذا استطاع المبرمجون التعبير عن توجيه اللائحة بأن تحوي نوع محدد من البيانات
هذه هي الفكرة الأساسية من العموميات
List<Integer> myIntList = new LinkedList<Integer>(); myIntList.add(new Integer(0)); Integer x = myIntList.iterator().next();
بملاحظة عملية التصريح عن المتحول myIntList
نجد ان هناك عملية تحديد اجباري للائحة انها لائحة بيانات من نوع Integer
بكتابة List<Integer> نقول ان List هي واجهه عمومية تأخذ (يتم تمرير) وسيط هو نمط ما في هذه الحاله هو Integer
قمنا ايضا بتحديد نمط البارامتر عند عمل الغرض list
يجب ملاحظة اننا بما فعلناه قمنا بالاستغناء عن عملية التحويل القسري في السطر الثالث
فبدلا عن عملية القسر الى Integer قمنا بجعل Integer كنمط تمرير في السطر الأول
قد تبدو الخطوة بسيطة لكن في الحقيقة حصل اختلاف كبير
اصبح بإمكان المترجم الأن ان يراقب صحة التنميط في زمن الترجمة
عندما نشير ان الائحة myIntListمصرح عنها بالنمط List<Integer> هذا يؤكد ان المتحول myIntList سيحمل قيم صحيحة أينما ووقتما يتم استخدامه والمترجم سيضمن هذا
بينما عند استخدام التحويل القسري سنقرأ بما يظنه المبرمج صحيحا
هذا يزيد القروءية الكود ومتانته خاصة في البرامج الضخمة




.jpg)