网站首页 新闻首页 网页设计图形动画软件编程网站开发办公软件操作系统数据库网络技术认证考试范文资料黑客攻防 书籍教程 进入论坛

简化繁琐的赋值——反射在Jdbc和Struts中的应用

http://www.diybl.com/ 2007-2-6  网络 点击:  [ 评论 ]
文章搜索:    【点击打包该文章】









      else if(type.equals("long"))







      {







        return new Object[]{new Long(Long.parseLong(value))};







      }







      else if(type.equals("float"))







      {







        return new Object[]{new Float(Float.parseFloat(value))};







      }







      else







      {







             System.out.println("no such type!");







             return null;







      }







}







以上我们就完整的将例一的问题的解决思路分析了一遍。







现在我们来看调用该共用方法的例一的代码实现:







stmt = (OracleCallableStatement) conn.prepareCall("{ Call FT_Save_Fabric.ft_fab_colorway_general_insert(" + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }");







int[] ports = new int[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};







String[] propNames = new String[]{“bom_id”,”colorway_number”,” color_number”,”colorway_type_id”,”print_id”,”print_name”,”print_type_id”,”print_repeat_type_id”,”print_repeat_height”,”print_repeat_height_uom_id”,”print_repeat_width”,”print_repeat_width_uom_id”,”print_status_id”,”yarn_dye_id”,”yarn_dye_name”,”yarn_wrap_color_number”,”yarn_weft_color_number”,”yarn_repeat_height”,”yarn_repeat_height_uom_id”,”yarn_repeat_width”,”yarn_repeat_width_uom_id”,”yarn_status_id”,”print_process_id”};







ValueManager. StmtToBean(propNames,general,ports,stmt);







stmt.execute();







同样,我们对例二的调用公用方法的实现如下:







public int setFabricWebBaseData(DynaActionForm form, HttpServletRequest request, LE_FabricBean bean) {







        String[] propNames=new String[]{“fabric_no”,”barcode_id”,”status_id”,”material_type_id”,”fabric_type_id”,”fabric_end_use_id”,”vendor_number”,”region_id”,”country_id”,”color_range_id”,”pattern_id”,”detail”,”formSet_id”};







        String[] fieldnames=new String[]{"txtID","txtBarcodeID","ddlStatus","ddlMaterialType","ddlFabricType","ddlEndUse","txtArticle","ddlRegion","ddlCountry","ddlColorRange","ddlPattern","txtDescription","txtComments","hidFormSetID"};







        ValueManager.formToBean(propNames,bean,fieldnames,form);







        LIBImageManage.setImageData(request, bean);







        return 0;







    }







关于公用方法formToBean(String[] propNames,Object o,String[] fieldNames,DynaActionForm form)的具体实现,我们可以到附录的代码里找到他们,这里就不再陈述。






后话


至此,我们已经运行Java反射机制来解决了在Jdbc和Struts应用中的一些繁琐的赋值问题。可以看出,应用Java反射机制,的确能使程序代码变得更加灵活与方便。正是由于这个原因,Java反射机制在一个应用的核心代码里被广泛使用。







在很多时候,我们需要知道一个由客户输入的类的元数据,在运行期内调用类的方法,在运行期内实例化一个类,等等都需要用到Java反射机制;还有工厂模式如果和Java反射机制结合起来,将更加灵活;Java反射机制和代理模式结合起来,形成动态代理模式等等。







一句话,Java反射机制让我们的代码更加的灵活与方便,应用的范围十分广泛。






参考文献


1.侯捷观点——Java反射机制







http://editblog.csdn.net/programmer/archive/2004/10/27/806.aspx







2.  Java 编程的动态性







http://www-900.ibm.com/developerWorks/cn/java/j-dyn0429/index.shtml







3.Java Reflection (JAVA反射)







http://dev.csdn.net/article/58/58798.shtm






附录

如果图片或页面不能正常显示请点击这里 站内搜索:   

文章评论

请您留言

 

最新新闻