Параметр конструктора представляет собой массив объектов - PullRequest
0 голосов
/ 01 июня 2009

У меня есть класс с этим конструктором:

Artikel(String name, double preis){
    this.name = name;
    verkaufspreis = preis;
    Art = Warengruppe.S;

У меня есть второй класс с этим конструктором:

Warenkorb(String kunde, Artikel[] artikel){
    this.kunde = kunde;
    artikelliste = artikel;
    sessionid = s.nextInt();
    summe = 0;
    for(Artikel preis : artikel){
        summe += preis.verkaufspreis;
    }
}

Как получить Artikel в массив Warenkorb и artikelliste?

Ответы [ 4 ]

3 голосов
/ 01 июня 2009
new Warenkorb("Dieter", new Artikel[] {new Artikel("Kartoffel", 0.25))};

Это то, что вы пытаетесь сделать?

2 голосов
/ 01 июня 2009

И, похоже, вы все равно используете Java 1.5+, попробуйте эту альтернативу для Warenkorb:

Warenkorb(String kunde, Artikel...artikel){
        this.kunde = kunde;
        artikelliste = artikel;
        sessionid = s.nextInt();
        summe = 0;
        for(Artikel preis : artikel){
                summe += preis.verkaufspreis;
        }
}

Написанный так, вы можете избавиться от уродливой записи Array и построить Warenkorb следующим образом:

new Warenkorb("Dieter", new Artikel("Kartoffel", 0.25)};
new Warenkorb("Günther", new Artikel("Kartoffel", 0.25), new Artikel("Tomate", 0.25)};
2 голосов
/ 01 июня 2009

Это то, что вы хотите?

Artikel[] artikels = new Artikel[2];
artikels[0] = new Artikel("John Doe", 0);
artikels[1] = new Artikel("Jane Doe", 1);
Warenkorb w = new Warenkorb("something", artikels);

Ваш вопрос не совсем ясен о том, что вы хотите сделать ...

1 голос
/ 01 июня 2009

Альтернатива, использующая Iterable вместо Array:

Warenkorb(String kunde, Iterable<? extends Artikel> artikel){
    this.kunde = kunde;
    artikelliste = artikel;
    sessionid = s.nextInt();
    summe = 0;
    for(Artikel preis : artikel){
            summe += preis.verkaufspreis;
    }
}

Может по-прежнему создаваться с использованием другого синтаксиса на основе массива, но также:

new Warenkorb("Buffy", Arrays.asList(new Artikel("foo",0.0), new Artikel("bar",1.0));

работает с любой реализацией Iterable, такой как ArrayList или HashSet и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...