反射reflect

来源:互联网 发布:nat123访问数据库很慢 编辑:程序博客网 时间:2024/05/20 14:22

反射调用方法实体类

测试类

package bean;import java.lang.reflect.Constructor;import java.lang.reflect.Method;import org.junit.Test;/* * 测试类 * public 方法(通过反射去调用共有的方法) * private 方法(通过反射去调用私有的方法) * 共有构造方法(通过反射去调用的构造方法) */public class Reflect {    // public 方法(通过反射去调用共有的方法)    @Test    public void test1() {        SysUser sysUser = new SysUser();        try {            Class<?> clazz = Class.forName("bean.SysUser");            Method method = clazz.getMethod("eat1", String.class);            String invoke = (String) method.invoke(sysUser, "111");            System.out.println("invoke=" + invoke);        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    // private 方法(通过反射去调用私有的方法)    @Test    public void test2() {        SysUser sysUser = new SysUser();        try {            Class<?> clazz = Class.forName("bean.SysUser");            Method method = clazz.getDeclaredMethod("eat2", String.class);            method.setAccessible(true);            String invoke = (String) method.invoke(sysUser, "112");            System.out.println("invoke=" + invoke);        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    // 共有构造方法(通过反射去调用的构造方法)    @Test    public void test3() {        SysUser sysUser = new SysUser();        try {            Class<?> clazz = Class.forName("bean.SysUser");            Constructor<?> constructor = clazz.getConstructor(String.class);            SysUser newInstance = (SysUser) constructor.newInstance("2222");            System.out.println(newInstance.name);        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

实体类

package bean;/* *  */public class SysUser {    String name;    String password;    public String eat1(String str) {        return str;    }    private String eat2(String str) {        return str;    }    public SysUser(String name) {        this.name = name;    }    public SysUser(String name, String password) {        super();        this.name = name;        this.password = password;    }    public SysUser() {    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    @Override    public String toString() {        return "SysUser [name=" + name + ", password=" + password + "]";    }}

CommonServlet

package com.huaxin.webexam.web.common;import java.io.IOException;import java.lang.reflect.Method;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CommonServlet extends HttpServlet {    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setCharacterEncoding("utf-8");        response.setContentType("text/html; charset=UTF-8");        try {            /** 0.当前字节码文件 **/            Class<? extends CommonServlet> clazz = this.getClass();            /** 1.获取method参数 **/            String method = request.getParameter("method");            /** 2.获取method 反射出当前访问的方法 **/            Method method2 = clazz.getMethod(method, HttpServletRequest.class, HttpServletResponse.class);            /** 3.调用方法 **/            // this调用 ,参数有request,response            Object path = method2.invoke(this, request, response);            System.out.println("path " + path);            /** 4.跳转页面 **/            if (path != null) {                request.getRequestDispatcher("/WEB-INF/jsp/" + path.toString() + ".jsp").forward(request, response);            }        } catch (Exception e) {            e.printStackTrace();        }    }    protected void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setCharacterEncoding("utf-8");        doGet(request, response);    }}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信账号冻结了怎么办 微信被冻结里面的钱怎么办 微信账户冻结了怎么办 微信公众号忘记密码怎么办 网课没有刷完怎么办 形势与政策挂了怎么办 苹果录屏声音小怎么办 老师跟学生家长吵起来了怎么办 蓝幕拍摄抠像有蓝色怎么办 学东西悟性不高怎么办 微商不会写笔记怎么办 布鞋买大了一码怎么办 凉鞋买大了一码怎么办 皮鞋小了一码怎么办妙招 图书馆借的书本损坏了怎么办 把人打伤没钱赔怎么办 小孩不小心打伤了老师怎么办 高考进了三段怎么办 工作中和领导产生冲突怎么办 酒店不给员工发工资怎么办 裙子没有解开超市的锁怎么办 接待老外听不懂他说的怎么办 脚脱皮又痒又臭怎么办 成都应聘平面模特被骗了怎么办 文明6开场一堆蛮族怎么办 幼儿园里出了水痘怎么办 穿高跟鞋脚容易出汗怎么办 粗跟鞋走路太响怎么办 粗跟鞋鞋跟很响怎么办 皮鞋跟走路太响怎么办 穿高跟鞋脚崴了怎么办 高跟鞋小了一码怎么办 高跟皮鞋磨脚怎么办 大同同煤集团三供一业人员怎么办 小孩被猫咪抓了怎么办 长得特别丑的人怎么办 锅巴放的不脆了怎么办 淘宝买到假货了怎么办 单位不给解约函怎么办 安卓个人热点打不开怎么办 密码忘记无法进入主机怎么办