Java 如何引用构造函数中给定名称的对象,并且我赢了';我不知道那叫什么名字?

Java 如何引用构造函数中给定名称的对象,并且我赢了';我不知道那叫什么名字?,java,constructor,getter-setter,Java,Constructor,Getter Setter,我有一个名为Chef的类,其中有三个构造函数。如下所示: public Chef(String chefName, double noodleStock) { this.chefName = chefName; this.noodleStock = noodleStock; this.bowlsCooked = 0; } public Chef(String chefName, double noodleStock, double vegStock) { this

我有一个名为Chef的类,其中有三个构造函数。如下所示:

public Chef(String chefName, double noodleStock) {
    this.chefName = chefName;
    this.noodleStock = noodleStock;
    this.bowlsCooked = 0;
}
public Chef(String chefName, double noodleStock, double vegStock) {
    this.chefName = chefName;
    this.noodleStock = noodleStock;
    this.vegStock = vegStock;
    this.bowlsCooked = 0;
}
public Chef(String chefName, double noodleStock, double vegStock,
    double porkStock) {
    this.chefName = chefName;
    this.noodleStock = noodleStock;
    this.vegStock = vegStock;
    this.porkStock = porkStock;
    this.bowlsCooked = 0;
}
在为每个厨师进货的方法中,我将需要
设置NoodleStock
,例如,为他们当前的进货添加一个值


如何确保我引用了正确的厨师?每个厨师之间唯一的区别是他们的名字和构造函数中的参数数量

通过跟踪他们,你知道正确的厨师

Chef chef1 = new Chef(...);
Chef chef2 = new Chef(...);
Chef chef3 = new Chef(...);
使用哪个构造函数是不相关的。然后使用

chef2.addNoodleStock(amount);

当然,您必须编写addNoodleStock()方法。

假设您在Chef类中定义了
setNoodleStock()
方法,即

public class Chef {

   ... instance variables ...

   public Chef(String chefName, double noodleStock) {
       ...
   }

   public Chef(String chefName, double noodleStock, double vegStock) {
       ...
   }

   public Chef(String chefName, double noodleStock, double vegStock,
       double porkStock) {
       ...
   }

   public void setNoodleStock(double stock) {
      this.noodleStock = stock;
   }

}
随后,当您创建
Chef
对象时,无论您调用哪个
setNoodleStock()
对象,都将设置其库存:

Chef chef1 = new Chef("First Chef", 2.0);

Chef chef2 = new Chef("Second Chef", 1.0);

chef1.setNoodleStock(4.0); // chef1 now has 4.0 noodles, chef2 still has 1.0

chef2.setNoodleStock(5.0); // chef1 has 4.0 noodles from above, chef2 now has 5.0
如何确保我引用了正确的厨师

如果您实际有一个对
Chef
实例的引用,则可以这样做。使用不同的构造函数不会改变
Chef
实例的任何内容

如果您需要通过
字符串名称
引用
厨师
,那么您可能应该使用
映射

Chef joe = new Chef("joe", 0);
Map<String, Chef> chefs = new HashMap<String, Chef>();
chefs.put(joe.getName(), joe);

但是,在这一点上,为什么不直接使用您已经用名称声明的
Chef joe
实例呢?

顺便说一句,
this(chefName,noodleStock)
将为您节省几行代码,如果每个厨师的名称不同,为什么你不能用名字来引用他们?你的意思一点也不清楚-请提供一个答案,以便我们可以帮助你。
Chef joe = chefs.get("joe");