... in Parameterliste?

  • Ich habe gerade den Buchauszug Crafting Java with Test-Driven Development, Part 6: Refactoring Tests gelesen, dabei ist mir ein seltsamer Parameter aufgefallen:

    Code
    private void assertPlayers(String... expected) {/**/}

    Zuerst dachte ich das das "..." ein Platzhalter ist, aber warum sollte man nur
    für einen Array-Of-String (stimmt nicht ganz) das nicht gleich so angeben?Also ran an den Editor erster Wahl (vim) und reinklopfen. Überraschung, der Code funktioniert wirklich!!!

    Hier mein kompletter Testcode - nur dafür wesentliche Auszüge aus dem obigen Artikel - nur um zu testen ob das überhaupt funzt, falls es wen interessieren sollte:

    Kann mir da mal wer erklären, was da genau passiert? Funktioniert das nur mit Generics? Ich gehe mal davon aus, das das eine Java5-Erfindung ist.

  • Zitat von ComSubVie

    Kann mir da mal wer erklären, was da genau passiert? Funktioniert das nur mit Generics? Ich gehe mal davon aus, das das eine Java5-Erfindung ist.

    mit generics hat das nichts zu tun, ist aber sehr wohl eine erfindung von JDK 5.0. die drei punkte geben an, dass hier entweder ein array übergeben werden kann oder eine reihe von argumenten gleichen typs: du kannst also schreiben:

    Code
    assertPlayers("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");

    oder

    Code
    assertPlayers(new String[] {"0","1","2","3","4","5","6","7","8","9"});

    was geschrieben wird, ist für den code in der methode assertPlayers unerheblich.

    siehe auch http://java.sun.com/j2se/1.5.0/doc…ge/varargs.html

  • Zitat von ComSubVie

    alles klar, wunderbar, danke! man lernt nie aus ;)


    irgendwie hab ich das nicht gefunden - mir sind aber auch keine sinnvollen suchen für "..." eingefallen ;)

    hm... vielleicht "java 5 what's new"? :D

  • *würg* Jetzt hat Java schon so viel Schlechtes von C übernommen, dass ich nur mehr auf echte Zeiger (+Arithmetik) in JDK 7.0 warte. Wer will printf in einer objektorientierten Sprache?

    Dipper dipper dii dipper dii dipper dii duuu

  • Was spricht gegen printf in einer objektorientierten Sprache?
    Ich warte übrigens auch auf Zeiger in Java - das wird Zeit das endlich wieder jemand auf die praktischen Features von C aufmerksam wird...

  • Zitat von sauzachn

    Wer will printf in einer objektorientierten Sprache?

    Dagegen spricht nun wirklich nichts. Gegen eine Methode, die eine Reihe von Objekten akzeptiert, die alle ihren Content als String ausgeben können ist doch nichts einzuwenden. C macht es halt gezwungenermaßen recht gefählich. C# z.b. aber wirklich nett, und sicher sowieso.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!