Java 如何引用构造函数中给定名称的对象,并且我赢了';我不知道那叫什么名字?
我有一个名为Chef的类,其中有三个构造函数。如下所示: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
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");