Effective-Java(Item 42)之小心地使用可變引數
阿新 • • 發佈:2018-11-12
可變引數是為printf設計的,在jdk1.5時加入jdk中;
呼叫時自動根據引數數量建立一個數組,將引數值放入陣列中,並將該陣列傳入包含可變引數的方法,使用時可以像陣列一樣使用可變引數;
使用方法:
引數個數為0或更多時,使用如下:
// java.util.Arrays#asList
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
引數個數為1或更多時,使用如下:
// java.util.PrintStream#printf public PrintStream printf(String format, Object ... args) { return format(format, args); }
呼叫引數個數較少的方法概率非常大,使用如下:
// java.util.EnumSet#of(假設呼叫5個引數或更少的of方法的概率為90%) public static <E extends Enum<E>> EnumSet<E> of(E e) {} public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2) {} public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3) {} public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4) {} public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4, E e5){} public static <E extends Enum<E>> EnumSet<E> of(E first, E... rest) {}