【问题标题】:Refecltion - Dynamic class invocation反射 - 动态类调用
【发布时间】:2014-07-02 01:24:51
【问题描述】:

以下是使用 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); 
     }   

【问题讨论】:

    标签: class dynamic reflection factory factory-pattern


    【解决方案1】:

    我试图得到答案,终于找到了解决方案。

    (代替 IF _ ELSE 我们需要替换以下代码)

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多