+1 امتیاز
قبل در برنامه نویسی توسط (308 امتیاز)
ویرایش شده قبل توسط

در کدهای زیر هر دو خروجی یکسان هستند تفاوت های آن ها در چیست؟

public static <E> void print2(List<E> param) {
    //do something
    for (E t : param) {
        System.out.println(t);
    }
}  
public static <T> void print(List<T> param) {
    //do something
    for (T t : param) {
        System.out.println(t);
    }
}

2 پاسخ

+3 امتیاز
قبل توسط (938 امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

در حقیقت هیچ تفاوتی از لحاظ پیاده سازی ندارند و شما می توانید از حروف کوچک و حتی کلمات چند حرفی نیز بدون هیچ خطایی استفاده کنید.

ولی معمولا بصورت عرفی و Java Convention از یکسری حروف رایج مانند E T K و V استفاده میکنند که بصورت خلاصه کلمات زیر است :

 T is meant to be a Type

(‫E is meant to be an Element (List<E>: a list of Elements)

<K is Key (in a Map<K,V


(V is Value (as a return value or mapped value)
+1 امتیاز
قبل توسط (1.1هزار امتیاز)

E، T و ... نام type parameter در Generic Type ها هستند و همانند نام متغییر ها می توانند متفاوت باشند. بنابراین در مثال شما فرقی بین E، T و یا هر نام دیگری وجود ندارد. 

معمولا برای نام گذاری type parameter ها از حرف اول بزرگ مفهوم type parameter استفاده می شود. مثلا K برای key یا T برای type و ...

سوالات مشابه

0 امتیاز
0 پاسخ 385 بازدید
+2 امتیاز
1 پاسخ 443 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط sina-deuxshiri (12 امتیاز)
+2 امتیاز
1 پاسخ 579 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط 1993 (242 امتیاز)
+1 امتیاز
2 پاسخ 1.1هزار بازدید
+1 امتیاز
2 پاسخ 2.2هزار بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط sara_sheikhi (20 امتیاز)
0 امتیاز
1 پاسخ 551 بازدید
+1 امتیاز
1 پاسخ 1.1هزار بازدید
0 امتیاز
2 پاسخ 1.9هزار بازدید
...