玩轉(zhuǎn)Java面試-為什么需要泛型?
1、適用于多種數(shù)據(jù)類型執(zhí)行相同的代碼
private static int add(int a, int b) {
System.out.println(a + "+" + b + "=" + (a + b));
return a + b;
}
private static float add(float a, float b) {
System.out.println(a + "+" + b + "=" + (a + b));
return a + b;
}
private static double add(double a, double b) {
System.out.println(a + "+" + b + "=" + (a + b));
return a + b;
}
如果沒有泛型,要實(shí)現(xiàn)不同類型的加法,每種類型都需要重載一個(gè)add方法;通過泛型,我們可以復(fù)用為一個(gè)方法:
2、泛型中的類型在使用時(shí)指定,不需要強(qiáng)制類型轉(zhuǎn)換(類型安全,編譯器會(huì)檢查類型)
看下這個(gè)例子:
List list = new ArrayList();
list.add("xxString");
list.add(100d);
list.add(new Person());
我們?cè)谑褂蒙鲜鰈ist中,list中的元素都是Object類型(無法約束其中的類型),所以在取出集合元素時(shí)需要人為的強(qiáng)制類型轉(zhuǎn)化到具體的目標(biāo)類型,且很容易出現(xiàn)java.lang.ClassCastException
異常。
引入泛型,它將提供類型的約束,提供編譯前的檢查:
List<String> list = new ArrayList<String>();
// list中只能放String, 不能放其它類型的元素
小結(jié)
另外,如果對(duì)并發(fā)編程或者面試,想要了解更多請(qǐng)持續(xù)關(guān)注微信公眾號(hào):Java面試教程,關(guān)注更多有用的面試要點(diǎn)與技巧。
了解更多Java相關(guān)資料,請(qǐng)關(guān)注微信公眾號(hào):Java面試教程
回復(fù): bbb20,獲取更多Java資料與面試手冊(cè)
回復(fù): bbb19,獲取Intellij idea最新版激活教程
讓我們一起,玩轉(zhuǎn)Java面試
