"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Java - default parameter

ChrisK 21.08.2005 - 20:46 701 8
Posts

ChrisK

dun dun dunnn
Avatar
Registered: Dec 2001
Location: Graz
Posts: 529
So, nachdem ich in letzter Zeit hauptsächlich auf der C++ Schiene unterwegs bin, hab ich eine Frage an die Java Coder des Forums.

Ist es möglich in Java default Parameter zu definieren?

in C++ würde das so aussehen:

Code:
void initialize(bool debug = false)

wenn nun initialize ohne Parameter aufgerufen wird wird automatisch false eingesetzt.

tia, chris

gue

Addicted
Avatar
Registered: Feb 2003
Location: Linz
Posts: 400
Nein, das musst du lösen indem du die Methode überladest:
Code:
void initialize() { initialize(false); }
void initialize(boolean debug) ...

//edit: Unsinn, seit Version 5.0 gibt's varargs. Damit habe ich aber ehrlich gesagt noch keine Erfahrungen gemacht.
Bearbeitet von gue am 21.08.2005, 22:38

ChrisK

dun dun dunnn
Avatar
Registered: Dec 2001
Location: Graz
Posts: 529
danke werd ich mir mal ansehen.

lg

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
kann jeder für sich entscheiden - ich find überladen besser... vor allem weil zb.

func ( int , str )
nicht die gleiche funktion wie
func ( str , int )
aufruft

und da kann man sich dann sehr sehr viel spielen und nette sachen schaffen auf die art

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11326
Zitat von watchout
und da kann man sich dann sehr sehr viel spielen und nette sachen schaffen auf die art

Stimmt. Manche halten es auch für unnötig und gefährlich:

http://www.acmqueue.com/modules.php...age&pid=315


Ich denke, es findet sich für jedes Feature einer Programmiersprache irgendwer, der es für zu kompliziert und gefährlich hält und es daher abgeschafft sehen möchte. IMHO soll aber letztendlich der Programmierer entscheiden, ob in einem bestimmten Fall ein Feature der Programmiersprache nützlich ist oder nicht. Man kann fast jedes Feature sinnvoll nutzen oder missbrauchen, und eine Programmiersprache macht aus einem schlechten Programmierer keinen guten.

Im gegenständlichen Fall würde ich keine Varargs verwenden, das ist für andere Zwecke vorgesehen (Übergabe von ad-hoc definierten Arraykonstanten). Wenn möglich, würde ich sogar das Interface umbauen in:

Code: PHP
void setDebug(bool b)
void initialize()

Damit wird beim Aufruf offensichtlich, was das "true" bedeutet.

ChrisK

dun dun dunnn
Avatar
Registered: Dec 2001
Location: Graz
Posts: 529
mir gehts dabei ja nicht um die variable Aneinanderkettung von argumenten, sondern um den aufruf einer Methode mit einem Defaultwert eines Parameters, wenn dieser nicht angegeben wird.

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von ChrisK
mir gehts dabei ja nicht um die variable Aneinanderkettung von argumenten, sondern um den aufruf einer Methode mit einem Defaultwert eines Parameters, wenn dieser nicht angegeben wird.
?
Code: PHP
int a (int normal)
{
  return a(normal,"default");
}

int a (int normal, String bla)
{
  ...
}
klar?

ChrisK

dun dun dunnn
Avatar
Registered: Dec 2001
Location: Graz
Posts: 529
ja das is schon klar :) danke.

die frage war nur, ob es eventuell ähnlich wie in C++ geht...

lg, chris

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11326
Zitat von ChrisK
ja das is schon klar :) danke.

die frage war nur, ob es eventuell ähnlich wie in C++ geht...

Die Antwort zu der Frage stand im ersten Antwortpost im ersten Wort... und ob es ein Feature in einer Programmiersprache mit einer bestimmten Syntax gibt, kann man durch Lesen der Dokumentation herausfinden.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz