[JAVA] Point 53: Utilisez judicieusement les varargs

53. Les arguments de longueur variable doivent être utilisés avec prudence

package tryAny.effectiveJava;

public class Varargs {
    public static void main(String[] args) {
        System.out.println(min1(99));
        System.out.println(min2(1, 2, 3));

    }

    // ugly
    static int min1(int... args) {
        if (args.length == 0)
            throw new IllegalArgumentException("Too few arguments");
        int min = args[0];
        for (int i = 1; i < args.length; i++)
            if (args[i] < min)
                min = args[i];
        return min;
    }

    // better
    static int min2(int firstArg, int... remainingArgs) {
        int min = firstArg;
        for (int arg : remainingArgs) {
            if (arg < min) {
                min = arg;
            }
        }
        return min;
    }
}
public void foo() { }
public void foo(int a1) { }
public void foo(int a1, int a2) { }
public void foo(int a1, int a2, int a3) { }
public void foo(int a1, int a2, int a3, int... rest) { }

Recommended Posts

Point 53: Utilisez judicieusement les varargs
Item 52: Utiliser la surcharge judicieusement
Point 45: Utilisez judicieusement les flux
Point 83: Utilisez judicieusement l'initialisation paresseuse
Point 66: Utiliser judicieusement les méthodes natives
Point 32: Combiner judicieusement les génériques et les varargs
Article 55: Renvoyez judicieusement les options
Point 26: N'utilisez pas de types bruts
Point 59: Connaître et utiliser les bibliothèques
Élément 40: utiliser systématiquement l'annotation de remplacement
Rubrique 69: N'utiliser des exceptions que pour des conditions exceptionnelles
Point 41: Utiliser les interfaces de marqueurs pour définir les types
Élément 36: utiliser EnumSet au lieu de champs de bits
Point 71: éviter l'utilisation inutile d'exceptions vérifiées
Point 37: Utilisez EnumMap au lieu de l'indexation ordinale
Point 72: Favoriser l'utilisation d'exceptions standard
Point 48: Soyez prudent lorsque vous créez des flux parallèles