java - 从 Java 列表中显示特定类型披萨的方法
问题描述
我有一个简单的 Java 比萨程序,使用工厂模式制作。基本上,当工厂作为参数给出时,它会创建一个特定的披萨,然后将其添加到 PizzaShop 的披萨列表中。
我想创建一个方法来显示我有多少特定的比萨饼。例如,当调用该方法时,我希望它显示类似“我们有 5 个 PizzaChicago 和 3 个 PizzaNewYork”的内容。我不知道该怎么做。
这是我的代码。
public interface Pizza {
String name();
}
public class PizzaChicago implements Pizza{
public Integer price;
public PizzaChicago(Integer price){
this.price = price;
}
@Override
public String name() {
return this.getClass().getSimpleName();
}
}
public class PizzaNewYork implements Pizza{
public Integer price;
public PizzaNewYork(Integer price){
this.price = price;
}
@Override
public String name() {
return this.getClass().getSimpleName();
}
}
public interface PizzaFactory {
public Pizza createPizza(Integer price);
}
public class PizzaNewYorkFactory implements PizzaFactory{
@Override
public Pizza createPizza(Integer price) {
return new PizzaNewYork(6);
}
}
public class PizzaChicagoFactory implements PizzaFactory{
@Override
public Pizza createPizza(Integer price) {
return new PizzaChicago(8);
}
}
import java.util.ArrayList;
import java.util.List;
public class PizzaShop {
List<Pizza> pizzaList = new ArrayList<>();
public void createPizza(PizzaFactory factory, Integer price){
Pizza pizza = factory.createPizza(price);
System.out.println(pizza.name() + " " + "was created");
pizzaList.add(pizza);
}
}
`
解决方案
您要做的是迭代列表并检查每个对象的类型。
int countPizzaNewYork = 0, countPizzaChicago = 0;
for(Pizza p: pizzaList){
if(p instanceOf PizzaNewYork)
{
countPizzaNewYork++;
}
else
{
countPizzaChicago++;
}
}
System.out.println("We have "+ countPizzaChicago+" PizzaChicago and "+countPizzaNewYork+" PizzaNewYork");
推荐阅读
- google-cloud-platform - 如何将子域指向 GCP Click to Deploy VM on Google Cloud Platform?
- pic - 从 xc32 2.10 迁移到 2.15 时出现链接器错误
- vba - 使用 VBA 获取邮箱名称
- c++ - C++ 类型转换运算符
- r - 如何根据 r 中的两个不同列删除重复的行?
- spring - 使用@MockBean 注入的@Service 中的字段上的@Value 会导致空值
- json - jsonb postgres获取选择数组行动画子json
- maven - 提供范围和编译范围带来的传递依赖被计算为编译范围
- javascript - 添加后退按钮或指向图像文件页面的链接
- java - com.jayway.jsonpath.InvalidPathException:路径中不允许有空格