zoukankan      html  css  js  c++  java
  • Java反射机制的简单应用

    一直感觉java的反射机制非常强大,可是可用的地方不多。在android学习的时候。一直想实现挂断电话的功能,可是系统并没有提供开放的api接口,看了一下网上使用反射机制来实现该功能,确实非常强大,非常有用。

     

    今天在相应的web开发中,client须要提交參数给server,自己已经写好了相应的bean文件。可是每一次都须要就其内部的key-value进行拼接,比較麻烦,突然想起了了反射机制,尝试了一下,确实很的好用。以下看一下代码:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public class Bean{
        String name;
        String property;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getProperty() {
            return property;
        }
        public void setProperty(String property) {
            this.property = property;
        }   
    }

    上面是一个Bean类,有2个属性,在请求server时,我须要将其拼接为name=xxx&property=xxx,一个还好,非常多这种凭借就须要将其抽象出来了,以下使用反射机制对其拼接。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    import java.io.UnsupportedEncodingException;
    import java.lang.reflect.Field;
    import java.net.URLEncoder;
    import java.util.HashMap;
    import java.util.Map;

    public class ParamsUtil {
        public static void main(String[] args) throws IllegalArgumentException,
                IllegalAccessExceptionUnsupportedEncodingException {
             //设置属性
            Bean bean = new Bean();
            bean.setName("blog.androiddevelop.cn");
            bean.setProperty("master");

             //获取全部变量
            Field[] fields = bean.getClass().getDeclaredFields();

            StringBuffer sb = new StringBuffer("");
            for (int i = 0; i < fields.length; i++) {
                sb.append(fields[i].getName());
                sb.append("=");
                sb.append(URLEncoder.encode(String.valueOf(fields[i].get(bean)),
                        "UTF-8"));
                if (< fields.length - 1)
                    sb.append("&");
            }
            System.out.println(sb.toString());
        }
    }

    这样下来就将參数进行了拼接。当然,这样也有一定的弊端,要处理的对象里面的变量不能是非常复杂的类型。


    很多其它文章请前往小胖轩.

  • 相关阅读:
    01Go开发环境搭建(参考无闻大神)
    巨蟒python全栈开发flask4
    巨蟒python全栈开发flask3
    巨蟒python全栈开发flask2
    巨蟒python全栈开发flask1
    巨蟒python全栈开发flask目录
    巨蟒python全栈开发linux之cento9
    巨蟒python全栈开发linux之cento8
    巨蟒python全栈开发linux之centos7
    巨蟒python全栈开发linux之centos6 第二篇
  • 原文地址:https://www.cnblogs.com/llguanli/p/8289634.html
Copyright © 2011-2022 走看看