java.反射

反射机制:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

//Class.forName(): 使用给定的类加载器,返回与带有给定字符串名的类或接口相关联的 Class 对象。给定一个类或接口的完全限定名,此方法会试图定位、加载和链接该类或接口。指定的类加载器用于加载该类或接口,如果参数 loader 为 null,则该类通过引导类加载器加载。只有 initialize 参数为 true 且以前未被初始化时 ,才初始化该类。
        Class cls=Class.forName("      ");
        Method method=cls.getMethod("","");//获取方法名和参数
        method.invoke(obj,"")//调用获取到的方法


public class BasicServlet extends HttpServlet {
 /**
  *
  */
 private static final long serialVersionUID = -4859451044483732919L;
 
 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  
  doPost(request,response);
  
  
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  
  String handler=request.getParameter("handler");
  try {

       Methodmethod=this.getClass().getDeclaredMethod(handler,HttpServletRequest.class, HttpServletResponse.class);
       method.invoke(this,request, response);
   } catch (Exception e) {
    throw new RuntimeException("无此方法:"+handler+"\n Exception:"+e);
   }
 }
}


public class StuServlet extends BasicServlet {
 
 private static final long serialVersionUID = -7408370408029425249L;
 
 
 
 public void addStu(HttpServletRequest request, HttpServletResponse response){
  
  System.out.println("增加学生方法");
 }
 
 
 public void deleteStu(HttpServletRequest request, HttpServletResponse response){
  
  System.out.println("删除学生方法");
 }
 
}

你可能感兴趣的:(java.反射)