وقتی شما از extends برای مشخص کردن Boundary در Wildcard استفاده می کنید بدین معنی است که:
-
شما یک لیست از اشیائی دارید که یا از جنس کلاس Book هستند و یا ساب کلاس های Book مثل Album و Booklet.
بهمین خاطر خواندن از این لیست safe است و می توان براحتی هر کدام از اشیاء خوانده شده را در متغییری از جنس Book دخیره کرد (cast).
اما نمی توانید به این لیست شئ اضافه کنید بدلیل اینکه نمی دانید لیستی که بعنوان پارامتر برای متد شما ارسال شده از جنس Book است یا Booklet یا Album:
upperBoundedMethod(new ArrayList<Book>());
upperBoundedMethod(new ArrayList<Album>());
upperBoundedMethod(new ArrayList<Booklet>());
نکته ۱: در جاوا در زمان کامپایل نوع داده Generics مشخص می شود.
نکته۲: وقتی شما از super برای مشخص کردن Boundary در Wildcard استفاده می کنید بر عکس این اتفاق می افتد و شما برای اقزودن به لیست مشکلی ندارد و برای خواندن از آن مشکل دارید.