构造函数参数是一个对象数组

时间:2009-06-01 17:50:14

标签: java arrays constructor

我有一个带有这个构造函数的类:

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 个答案:

答案 0 :(得分:3)

new Warenkorb("Dieter", new Artikel[] {new Artikel("Kartoffel", 0.25))};

这是你想要做的吗?

答案 1 :(得分:2)

这是你想要的吗?

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);

你的问题并不清楚你想做什么......

答案 2 :(得分:2)

而且,看起来你正在使用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;
        }
}

这样写的,你可以摆脱丑陋的数组符号并构造一个像这样的Warenkorb:

new Warenkorb("Dieter", new Artikel("Kartoffel", 0.25)};
new Warenkorb("Günther", new Artikel("Kartoffel", 0.25), new Artikel("Tomate", 0.25)};

答案 3 :(得分:1)

使用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的任何实施,例如ArrayListHashSet