1044 Stimmen

Was bedeuten die 3 Punkte neben einem Parametertyp in Java?

Was bedeuten die folgenden 3 Punkte String in der folgenden Methode bedeuten?

public void myMethod(String... strings){
    // method body
}

10voto

Mr.Q Punkte 3879

Um etwas Licht ins Dunkel zu bringen, ist es wichtig zu wissen, dass var-arg-Parameter auf einen beschränkt sind und man nicht mehrere var-art-Parameter haben kann. Dies ist zum Beispiel nicht zulässig:

public void myMethod(String... strings, int ... ints){
// method body
}

4voto

Ε Г И І И О Punkte 9264

Betrachten Sie es einfach als das Schlüsselwort params in C#, wenn Sie aus diesem Bereich kommen :)

2voto

trocchietto Punkte 2518

Ein sehr gängiges Beispiel für die Verwendung der drei Punkte findet sich in einer der bekanntesten Methoden in Android AsyncTask (das heute wegen RXJAVA nicht mehr so oft verwendet wird, ganz zu schweigen von den Google Architecture Komponenten), können Sie Tausende von Beispielen finden, wenn Sie nach diesem Begriff suchen, und der beste Weg, die Bedeutung der drei Punkte zu verstehen und nie mehr zu vergessen, ist, dass sie einen ...Zweifel... ausdrücken, genau wie in der gewöhnlichen Sprache. Es ist nämlich nicht klar, wie viele Parameter übergeben werden müssen, es könnte 0 sein, es könnte 1 sein, es könnten mehr sein (ein Array)...

0voto

PhantomReference Punkte 668

Zusätzlich zu den anderen gut geschriebenen Antworten ist ein Vorteil von varagrs Ich fand nützlich ist, dass, wenn ich eine Methode mit Array als Parameter-Typ aufrufen, es nimmt den Schmerz der Erstellung eines Arrays; Elemente hinzufügen und dann senden Sie es. Stattdessen kann ich die Methode einfach mit so vielen Werten aufrufen, wie ich möchte, von null bis viele.

-2voto

Vishal Sheth Punkte 143

Syntax: (Dreifacher Punkt ... ) --> Bedeutet, dass wir null oder mehr Objekte hinzufügen können, wenn wir ein Argument oder ein Array vom Typ Objekt übergeben.

public static void main(String[] args){}
public static void main(String... args){}

Definition: 1) Das Argument Object ... ist nur ein Verweis auf ein Array von Objects.

2) ('String []' oder String ... ) Es kann eine beliebige Anzahl von String-Objekten verarbeiten. Intern verwendet es ein Array vom Typ Referenzobjekt.

i.e. Suppose we pass an Object array to the ... argument - will the resultant argument value be a two-dimensional array - because an Object[] is itself an Object:

3) Wenn Sie die Methode mit einem einzigen Argument aufrufen wollen und es sich dabei um ein Array handelt, müssen Sie es explizit in

another. method(new Object[]{array}); 
OR 
method((Object)array), which will auto-wrap.

Anwendung: Es wird hauptsächlich verwendet, wenn die Anzahl der Argumente dynamisch ist (die Anzahl der Argumente ist zur Laufzeit bekannt) und bei Überschreibungen. Allgemeine Regel - In der Methode können wir beliebige Typen und eine beliebige Anzahl von Argumenten übergeben. Wir können keine Objekt(...)-Argumente vor irgendwelchen spezifischen Argumenten hinzufügen. d.h..

void m1(String ..., String s) this is a wrong approach give syntax error.
void m1(String s, String ...); This is a right approach. Must always give last order prefernces.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X