【问题标题】:Constructor parameter is an array of objects构造函数参数是一个对象数组
【发布时间】:2009-06-01 17:50:14
【问题描述】:

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

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 阵列?

【问题讨论】:

    标签: java arrays constructor


    【解决方案1】:
    new Warenkorb("Dieter", new Artikel[] {new Artikel("Kartoffel", 0.25))};
    

    这是你想要做的吗?

    【讨论】:

    • mmmm...Kartoffel...食物是我记住任何德语的唯一方式。
    • 你的拼写很棒;)。我嫉妒死了,我也想成为一名java大师......
    【解决方案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 种可能性 :)
    • +1。没错,你就像 Tweedle-Dee 和 Tweedle-Dum。 (我的意思是最好的方式:)
    • 是的,Jane Doe 和 John Doe 的德语对应词是什么?
    【解决方案3】:

    而且,看起来您无论如何都在使用 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)};
    

    【讨论】:

    • 是的,可变参数是去这里的方式。 +1
    【解决方案4】:

    使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-21
      • 2022-12-18
      • 2012-04-17
      • 2017-01-12
      相关资源
      最近更新 更多