1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

... in Parameterliste?

  • ComSubVie
  • 12. März 2006 um 22:34
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • ComSubVie
    Punkte
    230
    Beiträge
    42
    • 12. März 2006 um 22:34
    • #1

    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:

    Java
    import java.util.*;
    
    
    public class JavaTest {
      public static final int CAPACITY = 10;
      private List<String> players = new ArrayList<String>();
    
    
      public static void main( String [] args ) {
        JavaTest jt = new JavaTest();
        jt.testAddMultiplePlayers();
      }
    
    
      public void add( String player ) {
        players.add( player );
      }
    
    
      public List<String> players() {
        return players;
      }
    
    
      public void testAddMultiplePlayers() {
        for (int i = 0; i < JavaTest.CAPACITY; i++)
          this.add("" + i);
        assertPlayers("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
      }
    
    
      private void assertPlayers(String... expected) {
        System.out.println( "Expected: " + expected.length + ", Got: " +  this.players().size()) ;
        int i = 0;
        for (String player: this.players())
          System.out.println( "Player: Expected: " + expected[i++] + ", Got: " + player);
      }
    }
    Alles anzeigen

    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.

  • Paulchen
    Gast
    • 12. März 2006 um 22:40
    • #2
    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

  • ComSubVie
    Punkte
    230
    Beiträge
    42
    • 12. März 2006 um 22:45
    • #3

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

    Zitat von Paulchen

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


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

  • Paulchen
    Gast
    • 12. März 2006 um 23:55
    • #4
    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

  • sauzachn
    Punkte
    3.101
    Beiträge
    606
    • 13. März 2006 um 10:47
    • #5

    *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?

  • ComSubVie
    Punkte
    230
    Beiträge
    42
    • 13. März 2006 um 14:49
    • #6

    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...

  • Spockman
    Punkte
    210
    Beiträge
    41
    • 13. März 2006 um 15:43
    • #7
    Zitat von ComSubVie

    Was spricht gegen printf

    printf ist nicht (statisch) typsicher. Objektorientierung hat damit nichts zu tun.

  • Irrlicht
    Punkte
    421
    Beiträge
    82
    • 13. März 2006 um 19:06
    • #8
    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.

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum