java的反射

以前一直是写PHP的,对于PHP中的$($v)这样的用法觉得超级的方便。可是JAVA不提供这样的东西。我在处理同一页面中多个不同的请求,就常会写一堆的IF..ELSE..,自己看了也烦。偶像提点我了:JAVA是有反射机制的。为此小搞了一下。

反射,最重要的就是要让编译器知道所有要通过RTTI来处理的类。

具体处理分以下几个步骤:

1、对页面级的请求,都以请求名定义请求实现的方法。
public class Action {
	private News news;
    //构造器
	public Action(News news){
    	this.news = news; 
    }
    
    //新增操作显示新增界面
	public ModelAndView showadd(HttpServletRequest request,ModelAndView mav){
		return mav;
	}
	
	//新增操作
	public ModelAndView addnews(HttpServletRequest request,ModelAndView mav){
		mav.addObject("msg",news.newsAdd(request));	 	
		return mav;
	}
	
	//修改操作
	public ModelAndView editnews(HttpServletRequest request,ModelAndView mav) {
		return mav;
	}

	
	//作废操作
	public ModelAndView cancelnews(HttpServletRequest request,ModelAndView mav){
		return mav;
	}
	
	//删除
	public ModelAndView deletenews(HttpServletRequest request,ModelAndView mav){
		return mav;
	}
}


2、反射方法核心
                //获取反射操作的类
	    Class c = Class.forName(className);
	    //获得一个专属的Constructor的对象
	    Object object = c.getConstructor(conClass).newInstance(conArgs);	        
	    //得到具体操作名称的方法,以参数的class获取
	    Method m = c.getMethod(actionName, cl);
	    //执行此操作 加入实参
	    Object obj = m.invoke(object,args);  


3、反射方法调用
Reflect r = new Reflect(action);
		mav = (ModelAndView) r.getAction("cn.tohot.dscz.news.Action", 
				 new Class[]{News.class}, 
				 new Object[]{news},
				 new Class[]{HttpServletRequest.class,ModelAndView.class}, 
				 new Object[]{request,mav});


你可能感兴趣的:(java,spring,c,PHP,mvc)