以前一直是写PHP的,对于PHP中的$($v)这样的用法觉得超级的方便。可是JAVA不提供这样的东西。我在处理同一页面中多个不同的请求,就常会写一堆的IF..ELSE..,自己看了也烦。偶像提点我了:JAVA是有反射机制的。为此小搞了一下。
反射,最重要的就是要让编译器知道所有要通过RTTI来处理的类。
具体处理分以下几个步骤:
1、对页面级的请求,都以请求名定义请求实现的方法。
2、反射方法核心
3、反射方法调用
反射,最重要的就是要让编译器知道所有要通过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});