反射 - 动态类调用

时间:2014-05-14 06:21:05

标签: class dynamic reflection factory factory-pattern

以下是使用if else的代码。如果我需要动态创建一个类。我该怎么做?反射是用的吗?如果是这样:我如何使用反射实现相同的功能?

  public static Pizza getConcretePizza(String PType)
 { 
   Pizza p=null;
    if (PType.equals("Cheese")) 
      {
           p=new CheesePizza();
         //ResultIng = cp.FetchIng();
      } else if (PType.equals("Pepperoni")) 
      {
         p=new PepperoniPizza();
        // ResultIng = pp.FetchIng();
      }
      else if (PType.equals("Clam")) 
      {
          p = new CalmPizza();
          //ResultIng = cap.FetchIng();
      }
       else if (PType.equals("Veggie")) 
      {
         p= new VeggiePizza();
         // ResultIng = vp.FetchIng();
      }
       return(p); 
     }   

1 个答案:

答案 0 :(得分:0)

我尝试了解答,最后找到了解决方案。

(如果我们需要更换付费代码的话,我们就不知道了)

        Class<?> clazz = Class.forName("PizzaTrail." + PType);
        Object instance = clazz.newInstance();
        p = (Pizza) instance;
        return (p);

上面的代码将解决编写if else的问题,而反射将有助于动态调用类。