一直感觉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{

    

hl=en&q=allinurl%3Astring+java.sun.com&btnI=I%27m%20Feeling%20Lucky" style="">String name;

    

hl=en&q=allinurl%3Astring+java.sun.com&btnI=I%27m%20Feeling%20Lucky" style="">String property;

    public 

hl=en&q=allinurl%3Astring+java.sun.com&btnI=I%27m%20Feeling%20Lucky" style="">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(

hl=en&q=allinurl%3Aurlencoder+java.sun.com&btnI=I%27m%20Feeling%20Lucky" style="">URLEncoder.encode(String.valueOf(fields[i].get(bean)),

                    "UTF-8"));

            if (i < fields.length - 1)

                sb.append("&");

        }

        System.out.println(sb.toString());

    }

}

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

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

Java反射机制的简单应用的更多相关文章

  1. java反射机制的简单介绍

    参考博客: https://blog.csdn.net/mlc1218559742/article/details/52754310 先给出反射机制中常用的几个方法: Class.forName (& ...

  2. (转)java反射机制及简单工厂模式

    第一步,定义一个接口类 package factory.face; /** * 接口,为了保证返回的对象可以统一用 Product接受 * @author Administrator */ publi ...

  3. java反射机制的简单使用

    java 反射机制 反射机制简介 参考地址 什么是反射机制 反射机制指程序在运行时能够获取自身的信息.在java中只要给定类的名字,就可以通过反射机制获得类的所有信息 反射机制的优缺点 首先了解一下动 ...

  4. Java反射机制的简单学习

    今天看了一下Java的反射机制,就此记录一下. 首先,我们要先了解一下什么是反射? 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力. JAV ...

  5. 利用Java反射机制优化简单工厂设计模式

    之前项目有个需求,审批流程的时候要根据配置发送信息:发送短信.发送邮件.当时看到这个就想到要用工厂模式,为什么要用工厂模式呢?用工厂模式进行大型项目的开发,可以很好的进行项目并行开发.就是一个程序员和 ...

  6. Java -- 浅入Java反射机制

    1,Java 反射是Java语言的一个很重要的特征,它使得Java具体了"动态性". Java 反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类. 在运行时构造任意一 ...

  7. java反射机制简单实例

    目录 Java反射 简单实例 @(目录) Java反射 Java语言允许通过程序化的方式间接对Class进行操作.Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通 ...

  8. Java反射机制剖析(三)-简单谈谈动态代理

    通过Java反射机制剖析(一)和Java反射机制剖析(二)的学习,已经对反射有了一定的了解,这一篇通过动态代理的例子来进一步学习反射机制. 1.     代理模式 代理模式就是为其他对象提供一种代理来 ...

  9. Java反射机制 —— 简单了解

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

随机推荐

  1. 洛谷P3531 [POI2012]LIT-Letters

    题目描述 Little Johnny has a very long surname. Yet he is not the only such person in his milieu. As it ...

  2. 使用maven的tomcat:run进行web项目热部署

    近期又又一次看了一下maven的东西,事实上主要是由于去了解Jenkins,后期或许会补充jenkins的博文. 怎么在eclipse里面创建maven webproject,这边就不介绍了,參见:h ...

  3. bug 7715339 登录失败触发 ‘row cache lock’ 等待

    Bug 7715339 - Logon failures causes "row cache lock" waits - Allow disable of logon delay ...

  4. 【Cocos2d-x 017】 多分辨率适配全然解析

    转:http://blog.csdn.net/w18767104183/article/details/22668739 文件夹从Cocos2d-x 2.0.4開始,Cocos2d-x提出了自己的多分 ...

  5. 批量删除Windows7中隧道适配器的方法

    批量删除Windows7中隧道适配器的方法 1.在网卡属性的"网络"中,将"Internet协议版本(TCP/IPv6)"前面的勾去掉. 2.在CMD下分别执行 ...

  6. theme- 自定义控件属性

    今天想要在一个控件中增加自己的一条属性,具体步骤如下 1.在frameworks/base/core/res/res/values/attr中注册属性 因为我们希望增加的属性是在AutoComplet ...

  7. dump var_dump print print_r的区别

    dump var_dump print print_r的区别 一.总结 用dump()来打印就对了 1.echo和print:不能打印复合型和资源型数据: 2.var_dump()和print_r() ...

  8. 1.19 Python基础知识 - 软件目录开发规范及不同模块之间的调用

    一个软件项目的开发,除了需要很厉害的开发能力,同时在软件开发项目时,也需要对项目结构有良好的组织能力,将功能进行拆分,不同的功能放在不同的目录或文件中,方便日后的维护,升级等操作.比如核心代码的目录, ...

  9. NVM安装nodejs的方法

    安装nodejs方式有很多种. 第一种:官网下载  通过nodejs官网下载安装 ,但有个缺陷,不同版本的nodejs无法顺利的切换. 第二种: NVM安装  NVM可以帮助我们快速切换 node版本 ...

  10. JS match方法的返回数据的探究

    match方法是JS的字符串方法,详细说明可以看MDN的说明. 如果正则表达式匹配成功的话,match方法会返回一个数组,而数组里的数据有两种形式,对应着匹配方式:全局匹配与非全局匹配. 1. 全局匹 ...