Java 将多个值作为方法参数传递

Java 将多个值作为方法参数传递,java,methods,Java,Methods,我有一个简单的程序来复制人们在餐馆吃饭和他们点的东西 以下是我的Diner类,用于创建表示人的对象: package dinersbill; public class Diner { private String name; public Diner(String name) { this.name = name; } public String getName() { return name; } } 接下来是

我有一个简单的程序来复制人们在餐馆吃饭和他们点的东西

以下是我的Diner类,用于创建表示人的对象:

package dinersbill;

public class Diner {

    private String name;

    public Diner(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

}
接下来是my Item类,表示人们可能订购的食品:

package dinersbill;

public class Item {

    String name;
    double price;
    Diner buyer;

    public Item(String name, double price, Diner buyer) {
        this.name = name;
        this.price = price;
        this.buyer = buyer;
    }

}

我想有一个程序,以便项目可以分配给多个用餐者,如果用户愿意。如何做到这一点?

您可以将反应关系在
就餐者
物品
之间转换,反过来说:
就餐者
物品
组成


例如,您可以将一个
ArrayList
放入您的
Diner
类中,并有一个方法用几个菜来初始化用餐者。

您可以在一个项目中使用用餐者列表

public class Item {

    String name;
    double price;
    List<Diner> buyers;

    public Item(String name, double price, List<Diner> buyers) {
        this.name = name;
        this.price = price;
        this.buyers = buyers;
    }

    //You can still have another constructor for a single Diner like this
    public Item(String name, double price, Diner diner) {
        this.name = name;
        this.price = price;
        ArrayList<Diner> diners = new ArrayList<Diner>();
        diners.add(diner);
        this.buyers = diners;
    }

}
公共类项目{
字符串名;
双倍价格;
列出买家名单;
公共项目(字符串名称、双倍价格、列出买家){
this.name=名称;
这个价格=价格;
这是:买家=买家;
}
//您仍然可以为这样的单个用餐者创建另一个构造函数
公共项目(字符串名称、双倍价格、就餐者){
this.name=名称;
这个价格=价格;
ArrayList diners=新的ArrayList();
食客。添加(食客);
这就是:买家=食客;
}
}

也许解决方案是重新思考您的模型。物品和用餐者之间真的存在一对多的关系吗


一种更自然的关系可能是将其反转,让Diner在列表对象中保存多个项目。

听起来您需要一个java集合,而不是Diner类中的单个字符串

然而,我肯定这不是你想要的效果(你想让不止一个用餐者点同样的东西,对吗?)

如果是这样,您只需要为每个用餐者实例化一个新项目。与其将物品分配给就餐者,为什么不将就餐者分配给物品?这样,您就可以将同一项目实例化给多个用餐者

基本上,您希望在Diner类中引用一个项目,但不希望在Item类中引用Diner。那么你可以说

新餐车(“鲍勃”,新项目(“芝士蛋糕”,2.50))

这将创造一个名为“鲍勃”的新食客,他点了一个芝士蛋糕

public class Diner {

    private String name;
    private Item item;

public Diner(String name, Item item) {
    this.name = name;
    this.item = item;
}

public String getName() {
    return name;
}

}

您可以使用地图您可以更改标题吗,或者问题仅仅是让一个方法使用
列表
参数?