那泛型在 Java SE 7裡有什麼樣新的功能呢?
泛型很好用,Java 也強迫你在使用 Collection 類別時,一定要用泛型來指定型別,不然編譯時會出現警告訊息。但泛型用習慣了,每次都要輸入長長的型別宣告,例如
Map<String, List<Integer>> numbers = new HashMap<String, List<Integer>>();
我在寫程式時,還真的常常用到這樣落落長的泛型宣告,Java難到不能聰明一點,看到前面已經宣告過了,後面就直接省略不就好了。是的!Java SE 7裡就提供了這樣的省略功能,剛剛的那行程式碼就可以簡略成:
Map<String, List<Integer>> numbers = new HashMap<>();
是的,後面的實體類別就直接用一個空的角刮號就搞定了。Java 編譯器會聰明地幫你把完整的程式碼補上。
昨天的程式碼我們也可以這樣改造一下:
package idv.jacky.ironman4;
import idv.jacky.ironman4.day16.Apple;
import java.util.ArrayList;
import java.util.List;
public class Day18Example {
public static void main(String[] args) {
List<Apple> fruits = new ArrayList<>();
fruits.add(new Apple());
fruits.add(new Apple());
makeJuice(fruits);
}
public static void makeJuice(List<Apple> fruits) {
for(Apple a : fruits) {
a.makeJuice();
}
}
}
真的是省了一些事...