1. 程式人生 > >Effective-Java(Item 42)之小心地使用可變引數

Effective-Java(Item 42)之小心地使用可變引數

可變引數是為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) {}