seltsame Parameterdeklaration

Status
Nicht offen für weitere Antworten.

eric

Aktives Mitglied
Hallo Forum,

ich habe Fremdcode übernommen, da finden sich öfters Methoden der Form:

Code:
public void myMethod(Object... pram){
   ...
}

Ich kann mit den drei Punkten nicht wirklich was anfangen. Die werden teilweise als Arrays behandelt teilweise als String. Kennt jemand eine Erklärung dafür?

Grüsse Eric
 
S

SlaterB

Gast
gibHoechstenWertOderNull(-3);
gibHoechstenWertOderNull(-3,4);
 

Leroy42

Top Contributor
AlArenal hat gesagt.:
Ich grüble gerade wo sich sowas sinnvoll einsetzen lässt...

Na zum Beispiel bei der printf-Methode?

Code:
System.out.printf("%d ist die Lösung.%n'%d*%d' aber nicht die Frage :-(%n", 42, 6, 7);
 

Leroy42

Top Contributor
SlaterB hat gesagt.:
gibHoechstenWertOderNull(-3);
gibHoechstenWertOderNull(-3,4);

Und hier die entsprechende Implementation:
Code:
	int gibHoechstenWertOderNull(int ... werte) {
		for (int i=Integer.MAX_VALUE; i > Integer.MIN_VALUE; i--)
			for (int wert : werte)
				if (wert == i)
					return i;
		return werte.length==0 ? 0 : Integer.MIN_VALUE;
	}

:shock:
:cool:

Edit: Nun ja! Man könnte noch ein Bisserl an der Effizienz herumschrauben.... ???:L
 

Wildcard

Top Contributor
AlArenal hat gesagt.:
Ich grüble gerade wo sich sowas sinnvoll einsetzen lässt...
Immer sehr praktisch wenn eine Methode zB mehrere Strings erhalten kann. Wenn es nur ein oder 2 sind braucht man kein array im Methodenaufruf zu erzeugen.
 

AlArenal

Top Contributor
Wildcard hat gesagt.:
AlArenal hat gesagt.:
Ich grüble gerade wo sich sowas sinnvoll einsetzen lässt...
Immer sehr praktisch wenn eine Methode zB mehrere Strings erhalten kann. Wenn es nur ein oder 2 sind braucht man kein array im Methodenaufruf zu erzeugen.

Zunächst einmal sind mir Arrays nicht geheuer. Ich benutze eh immer ne List ;) Natürlich stecke ich dann vorne auch entsprechend ne List erzeugen und füllen, die ich dann übergebe.. *überleg* ... hm .. also ich halte ne sinnvolle Verwendung von einer variablen Argumentliste für einen Ausnahmefall. Entweder denke ich zu verwuer, oder schreibe die falsche Art von Anwendung ;)

Es könnte aber auch damit zusammenhängen, dass ich mich die letzten Jahre immer auf nem 1.4er Stand bewegt habe und erst in naher Zukunft mal "so richtig" mit Java 5 kann...
 

mic_checker

Top Contributor
Notwendig ist es nicht, imho Geschmackssache.

Habs bisher an manchen Stellen eingesetzt, aber wäre natürlich genauso über Arrays oder andere Collection-Klassen gegangen ;)
 

Leroy42

Top Contributor
AlArenal hat gesagt.:
Es könnte aber auch damit zusammenhängen, dass ich mich die letzten Jahre immer auf nem 1.4er Stand bewegt habe und erst in naher Zukunft mal "so richtig" mit Java 5 kann...

Denke ich auch mal.

Mir persönlich hat in Java immer das vararg-Konzept gefehlt. Ich bin
froh daß ich nun endlich ein printf(..) benutzen konnte anstatt immer
mit den

Code:
System.out.prinln(i + "*" + j + " = " (i*j));
herummurksen zu müssen.

Auch geht mir ein


Code:
status.setText(String.format("%,d ms Laufzeit", time));

viel flüssiger von der Seele! :D
 

Wildcard

Top Contributor
@AlArenal
natürlich braucht das niemand. Es ist einfach syntactic sugar, ich selbst verwende varargs auch äusserst selten.
Da ich in der Regel Arrays verwende wenn die Anzahl der Elemente fix ist, können varargs hier tatsächlich schöneren Code produzieren.
 

eric

Aktives Mitglied
JPKI hat gesagt.:
eric hat gesagt.:
Die werden teilweise als Arrays behandelt teilweise als String.
Wir helfen gerne, doch erklär bitte erst einmal was du damit meinst :wink: .

Damit meine ich, dass meist einfach Strings reingesteckt werden und in der Methode Arrays ankommen. Das ist mir aber auch erst nach der Erkärung klar geworden.

@kleiner held: Danke für die schnelle Aufklärung.

Da ist das wohl gelöst.
Grüsse
 

André Uhres

Top Contributor
Wildcard hat gesagt.:
Wobei das:
André Uhres hat gesagt.:
maximum heap size: 64 MB (das Limit liegt bei 2GB)
falsch ist, und das
André Uhres hat gesagt.:
Ein grosser Server könnte gut 1000 MB heap size benötigen.
für einen großen Server noch leicht untertrieben :wink:

Das sind nur Orientierungsgrössen, die "richtigen" sind wohl systemabhängig.
Dein Beitrag ist in der Form wenig hilfreich und sowieso im falschen Thread.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben