gpt4 book ai didi

java - 如何通过反射减少IF-ELSE的使用?我可以得到代码示例吗

转载 作者:行者123 更新时间:2023-12-01 22:58:33 25 4
gpt4 key购买 nike

我试图对 PizzaFactory 类的代码使用反射,以便我可以删除 if else 条件并使我的代码更加动态。但我无法弄清楚如何。

   Pizza.java
package PizzaTrail;
import java.util.List;

//this is the main abstract factory which will be extended by the concrete factory
public abstract class Pizza { public abstract List fetchIngredients(String Type); }


PizzaFactory.java
package PizzaTrail;
import java.util.List;

//this is the concrete factory
public class PizzaFactory extends Pizza
{
public static Pizza getConcretePizza(String PType)
{
Pizza p=null;
if (PType.equals("Cheese"))
{
p=new CheesePizza();
} else if (PType.equals("Pepperoni"))
{
p=new PepperoniPizza();
}
else if (PType.equals("Clam"))
{
p = new CalmPizza();

}
else if (PType.equals("Veggie"))
{
p= new VeggiePizza();

}
return(p);
}
}


ChessePizza.java
package PizzaTrail;

import java.util.ArrayList;
import java.util.List;

public class CheesePizza extends Pizza {
List ing = new ArrayList();
@Override
public List fetchIngredients(String Type)
{
ing.add("Ingredient : Shredded Mozzarella Cheese");
ing.add("Ingredient : Peppers");
ing.add("Ingredient : Feta cheese");
ing.add("Ingredient : Pesto");
return (ing);
}

}

}

任何人都可以帮助我获取 PizzaFactory 类中使​​用的反射,以便我可以动态调用 CheesePizza 类等吗?

最佳答案

您可以将concreate Pizza的类提供给工厂方法 -

public static <T extends Pizza> T getConcretePizza(Class<T> clazz) {
try {
return clazz.newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}
}

关于java - 如何通过反射减少IF-ELSE的使用?我可以得到代码示例吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23680503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com