zoukankan      html  css  js  c++  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 = (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;
                    }

    一堆代码简化能这样,开心,嘿嘿

  • 相关阅读:
    fastjson基本使用 (待继续完善)【原】
    webkit内核浏览器的CSS写法
    sencha touch pull-refresh-panel 面板下拉刷新
    一个非常棒的星星评分插件
    JavaScript字符转Unicode,顺便说句:GitHub的Oh no页面很亮
    Git版本控制软件结合GitHub从入门到精通常用命令学习手册
    手把手教你如何加入到github的开源世界!
    前端面试题:高效地随机选取数组中的元素
    CSS3 动画animation
    CSS3 Transform
  • 原文地址:https://www.cnblogs.com/cuglkb/p/6846639.html
Copyright © 2011-2022 走看看