Was ist ... (3 Punkte) in der Java-Quelle gefunden? Argument mit variabler Länge, von dem man wissen muss

Auslösen

Ich habe ein Argument von ... (3 Punkte) in der Java-Quelle gesehen.

java:Was...Was?


    private static void printArgs(String description, Object... args) {
        for (Object object : args) {
            System.out.println(object);
        }
    }

... (drei Punkte) stehen für Argumente variabler Länge.

Argumente mit variabler Länge können mehrere Argumente des angegebenen Typs angeben.

Versuchen Sie, das Argument anzugeben


        //Das ist in Ordnung
        printArgs("Einer", "Mehrere");
        //Dies ist auch in Ordnung
        printArgs("Zwei", "Mehrere", "Bezeichnung");
        //Dies ist auch in Ordnung
        printArgs("Drei", "Mehrere", "Bezeichnung", true);
        //Das ist in Ordnung
        printArgs("Keiner");

Ergebnis


Einer:Mehrere
Zwei:Mehrfachbezeichnung
Drei:Mehrfachspezifikation wahr
Keiner: 

Argumente mit variabler Länge sind wie das Definieren eines Arrays.

Das Kompilieren einer Argumentmethode mit variabler Länge erzeugt ein Array.

Nach der Kompilierung


    public void methodName(String description, Object[] vars)
Inhalt der Methode.
    }

Das Argument variabler Länge kann auch ein Array sein.

Sie können auch ein Array als Argument angeben


//Das ist in Ordnung
methodName("Array", new int[]{1,2,3,4,5});
//Auch das ist in Ordnung
methodName("Array und eins", new int[]{1,2,3,4,5}, "Mehrere");

Es gibt Regeln für die Verwendung von Argumenten variabler Länge.

** Überladen Sie nicht mit einem Array als Argument ** Grund: Beim Kompilieren ist es dasselbe

Überladen Sie nicht mit einem Array als Argument


    public void methodName(String description, Object... vars)
Inhalt der Methode.
    }
    public void methodName(String description, Object[] vars)
Inhalt der Methode.
    }

** Argument mit variabler Länge muss am Ende angegeben werden ** Grund: Möglicherweise, weil Sie nicht wissen, wie hoch der für das Argument mit variabler Länge angegebene Wert ist

Das Argument mit variabler Länge muss am Ende angegeben werden


//Ich erhalte einen Kompilierungsfehler mit args und diese Nachricht mit Eclipse.(Grobe Übersetzung:Schreiben Sie das Argument variabler Länge am Ende)
// 「The variable argument type Object of the method printArgs must be the last parameter」
    private static void printArgs2(Object... args, String description) {
Inhalt der Methode.
    }

** Es kann nur ein Argument mit variabler Länge angegeben werden ** Grund: Vielleicht wissen Sie nicht, wo sich das erste befindet, und das erste Argument mit variabler Länge wird am Ende nicht angegeben.

Es kann nur ein Argument mit variabler Länge angegeben werden


//Ich erhalte einen Kompilierungsfehler mit args2 und diese Nachricht mit Eclipse.
// 「The variable argument type Object of the method printArgs must be the last parameter」
    private static void printArgs2(String description, String... args2, Object... args) {
Inhalt der Methode.
    }

//Dies führt nicht zu einem Kompilierungsfehler
    private static void printArgs2(String description, String[] args2, Object... args) {
Inhalt der Methode.
    }

Bonus

So testen Sie eine private Methode, die in JUnit --Qiita ein Argument mit Array oder variabler Länge verwendet

: sunny: Site, die Argumente variabler Länge erklärt: sunny:

Recommended Posts

Was ist ... (3 Punkte) in der Java-Quelle gefunden? Argument mit variabler Länge, von dem man wissen muss
Was ist CHECKSTYLE: OFF in der Java-Quelle? Checkstyle zu wissen von
Was ist die Hauptmethode in Java?
Was tun, wenn Sie die Quellposition wissen möchten, an der die Methode in bind.pry definiert ist?
Der Weg von JavaScript nach Java
Möchten Sie wissen, was Ruby n die Potenz von 2 ist? (Machturteil von 2)
Was ich bei der Migration von der Spring Boot 1.4-Serie zur 2.0-Serie getan habe
Was tun, wenn Cloud 9 im Rails-Lernprogramm voll ist?
Die in /lib/calendars.properties von Java jre festgelegte Millisekunde ist UTC
Was ich bei der Migration von der Spring Boot 1.5-Serie zur 2.0-Serie getan habe
Was ist eine Klasse in der Java-Sprache (3 /?)
Was tun, wenn das Präfix c in JSP nicht gebunden ist?
Java-Referenz zum Verständnis in der Abbildung
Was ist das beste Lesen von Dateien (Java)
Was ist eine Klasse in der Java-Sprache (1 /?)
Was ist eine Klasse in der Java-Sprache (2 /?)
[Java] Fluss vom Quellcode zur Ausführung
So erhalten Sie das Datum mit Java
Ab Java9 werden Klassenkonstruktoren, die primitiven Typen entsprechen, als veraltet markiert.
[Anfänger] Was ist Docker überhaupt? Leicht verständliche Erklärung aus den Grundlagen!
[Java] Ist es nicht erforderlich, "Identität" bei der Implementierung der equals () -Methode zu überprüfen?
Androd: Was tun gegen "The Realm befindet sich bereits in einer Schreibtransaktion in"
Was ist JSP? ~ Lassen Sie uns die Grundlagen von JSP kennen !! ~
Was ist das Java Servlet / JSP MVC-Modell?
Was unterscheidet sich von der PHP-Sprache. [Hinweis]
Was ist der flüchtige Modifikator für Java-Variablen?
Was tun beim Debuggen von "Quelle nicht gefunden"?
[Java] Memo zum Schreiben der Quelle
[Java] In der Ausgabe wird etwas als "-0.0" angezeigt
Was ist Java <>?
Was ist java
Was ist zu tun, wenn in Eclipse "Fehler beim Laden der gemeinsam genutzten JNI-Bibliothek" angezeigt wird?
Der richtige Weg, um die Tomcat-Quelle in Eclipse zu sehen
[Java] So erhalten Sie die URL der Übergangsquelle
[Java] So lassen Sie den privaten Konstruktor in Lombok weg
[Java] Ich möchte die Differenz zum Datum berechnen
Wie schreibe ich Scala aus der Perspektive von Java
Was ist besser, Kotlin oder zukünftiges Java?
[JAVA] Was ist der Unterschied zwischen Schnittstelle und Zusammenfassung? ?? ??
In der Abbildung verstandene Java-Klassen und -Instanzen
Zusammenfassung der Implementierung von Standardargumenten in Java
Ich habe versucht, die Methode der gegenseitigen Teilung von Eugrid in Java zu implementieren
Was Java-Ingenieure benötigen, um sich auf die Java 11-Version vorzubereiten
Die Geschichte, dass .java auch in Unity 2018 erstellt wurde
Ich habe versucht herauszufinden, was sich in Java 9 geändert hat
In Java möchte ich mehrere angegebene Zeichen nur von Anfang bis Ende abschneiden.
Änderungen von Java 8 zu Java 11
Summe von Java_1 bis 100
Kommentare in der Java-Quelle
Eval Java-Quelle von Java
Was ist Java-Kapselung?
Von Java zu Ruby !!
Was ist Java-Technologie?
Was ist Java API-Java?
[Java] Was ist ArrayList?