ב-JDK 1.5.0 נכנס מושג חדש ששמו Generics, שזה קצת כמו templates של ++C. הרעיון הוא, במקרה של ArrayList למשל, שמדובר ב-ArrayList שמכיל עצמים מסוג E (או מסוגים היורשים מ-E). זה מאפשר TYPE SAFETY טוב יותר ויתרונות נוספים. קרא פה עוד על GENERICS.
ש סיבה לשימוש בשם משתנה שונה, אולי הם מסמנים מחלקות מסוגים שונים שמצפים שתשתמש שם, או אולי יש יותר מטיפוס אחד בתוך הGeneric הזה ואז המקסימום שאתה יכול לדרוש זה T1 ו T2 אבל זה כבר ממש לא משנה.