首页 > 代码库 > java反射机制
java反射机制
最近在做一个项目。
需求是这样的,前端传一个参数param表示要从服务器获取的参数,后端需要把对应的参数从服务器中取出来。
本来觉得没什么,应该蛮简单。结果一看表,嗯,40多个参数,如果用if...else...或者switch来写估计得写死我。
所以我就想有没有这样的方法,可以通过传入的param,自动调用对应的getParam方法。
于是就想到java的反射机制。
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。(抄的别人博客中的话)。
在这里,我利用java的反射机制目的就是根据动态的param动态调用对象的方法。
话不多说,下面是我的代码。
JSONObject json = new JSONObject() ; Field[] fields = msgParam.getClass().getDeclaredFields(); try { for(int i=0;i<fields.length;i++){ String attributeName = fields[i].getName(); //获取属性名称 String attributeNameUpper = attributeName.substring(0,1).toUpperCase()+attributeName.substring(1); //属性名称首字母大写 // String attributeType = fields[i].getGenericType().toString(); //获取属性类型 if (attributeName.toLowerCase().equals(param)) {//如果属性名和url中传入参数的名字相同 Method method = msgParam.getClass().getMethod("get"+attributeNameUpper); //获取get方法 String value = http://www.mamicode.com/(String)method.invoke(msgParam); //调用get方法 json.element(attributeName, value); // } } return json; } catch (Exception e) { // TODO: handle exception json.element("error", "unknown"); //json json.element("msg", "未知错误"); return json; }
一堆代码简化能这样,开心,嘿嘿
java反射机制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。