T اینجا کارش چیه ؟؟
ای نماد بر میگرده به Generics و به معنی این هست که کلاس یا متد شما بر اساس انواع مختلفی کار کنه. بعنی نمی خوای از نوع از قبل مشخصی استفاده کنی مثل String, Object, ... و بر اساس هر نوعی که کاربر خواست تعیین کنه کلاس شما و متد شما چک های نوع رو انجام میده. امیدوارم رسونده باشم خیلی کوتاه. مثلن شما می تونی استخری از کانکشن های دیتابیس داشته باشی. استخری از اشیای دانشجو داشته باشی و ... اما کلاس استخر جدا از اینکه رو چه کلاسی کار کنه یه کلاس واحد و مشخص و یکتا هستش. و نمی شه گفت اون شی توی استخر رو باید از چه نوعی گرفت. پس از جنریکز استفاده میکنیم.

چرا اومده تو کلاس
Pool
<
T
> یه interface بنام
PoolObjectFactory
<
T
> تعرف کرده ؟؟
می تونسته بیرونش هم تعریف کنه. اما از اونجایی که جای دیگه با این اینترفیس کاری نداشته و فقط میخواسته راهی برای استفاده کننده از استخر درست کنه که بتونه شی های توی استتخر رو به شکل معینی ایجاد کنه. واسه همین توی همون کلاس تعریفش کرده.


مگه برای استفاده از interface نباید که اول یه کلاس تعریف کرد و اونو توش implement کرد ؟؟
پس چطور اینکارو نکرده اومده
factory.
createObject
(
)
; رو اجرا میکنه ؟؟
چرا!‌ اون اومده یه شی فکتوری که بهش رسیده رو روش تابع createObject رو فراخوانی کرده. این مشتری کلاس استخر هست که باید اون تابع رو و اینترفیسش رو پیاده سازی کرده باشه تا بعدن این فراخوانی دچار مشکل نشه دیگه.
به این روش کاربرد میگن پلیمرفیزم!!!