反射的一个应用场景

场景

      用户需要从excel表格导出信息,一行信息包括很多属性。用户可以根据需要随机导出属性。

设计

      后台根据属性名称调用对应的Get方法。

难点

      比如共有属性A,B,C,D对应的方法为getA,getB,getC,getD.。由于用户的选择是随机的,程序里面如果按照传统写法,是这样的:

      if(a!=null)  getA()

      if(b!=null)  getB()

      if(c!=null)  getC()

      if(d!=null)  getD()

     ...

    如果属性很多呢?或许也可以使用for循环将代码精简一点。

     如果需求改变需要增加属性呢?那必然需要修改代码了。

 解决方法---反射

    利用反射机制可以调用未知方法。


    设属性类是 class pro{

            getA();getB();getC();getD()

     }

        

         pro p = new pro();

    Method m = p.getClass().getMethod(这里根据变量名组成方法名, new Class[0]);  
            
    m.invoke(p); 


    这样,根据用户传入的变量名调用相应的方法。满足开闭原则。

你可能感兴趣的:(java)