Android的更新速度太快,因为她的开源,所以造就了一批技术公司,一堆的方案,从而各有特色。对于一个想要深入了解系统的开发者来说这是幸运的,但从一个产品角度来看,这是致命的。我们开发应用程序,为了保证程序的兼容性,我们买了很多设备做兼容性测试,但往往不如人意。这里不打算解决此问题,只是唠叨下。本文只是介绍一个简单的技巧来做兼容。

背景:框架层的某个方法在新版本中添加了一个参数或者少了几个参数,为了程序的兼容性,必须要解决这个问题。否则将会多出很多个版本!这可怎么办呢?办法是有的,使用Java中的反射技术! 这里只写了个简单的演示程序。至于什么是反射技术,反射怎么用,请看这篇博文java反射详解 - Rollen Holt - 博客园

很简单,直接上代码

public class Demo {public void setABC(int id,String name){}public void setDEF(int id,String name,String pwd){System.out.println("id="+id+",name="+name+";pwd="+pwd);}}

package org.winplus.java;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class Test {public static void main(String[] args) {}/** * 得到类中的所有方法 */private static void getAllMethods(){Class clz = Demo.class;Method[] method = clz.getDeclaredMethods();for (Method m : method) {Class retType = m.getReturnType();Class[] paramTypes = m.getParameterTypes();for (int j = 0; j < paramTypes.length; j++) {if (j > 0)System.out.print(" , "); System.out.print(paramTypes[j].getName());}}}/** * 得到指定的方法,并调用方法 */private static void  exeMethod(){Class clz = Demo.class;Class[] clzs = new Class[3];clzs[0] = int.class;clzs[1] = String.class;clzs[2] = String.class;try {Method mth  = clz.getDeclaredMethod("setDEF", clzs);mth.invoke(new Demo(), 12,"tang","haha");System.out.println(mth.getName());} catch (SecurityException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}}

原创文章,转载请注明出处:http://blog.csdn.net/tangcheng_ok

更多相关文章

  1. Android更新UI的几种方式
  2. Android(安卓)记一次解决问题的过程:从源码中分析永远是解决问题
  3. Android大屏项目中的数字键盘输入界面的功能实现
  4. 使用Qt开发Android应用程序(Qt on Android),连接安卓手机真机调试时
  5. Android中直播视频技术探究之---采集摄像头Camera视频源数据进行
  6. 关于Android调用单目摄像头以及双目摄像头的方法(智能平板)
  7. Android学习五之Service
  8. 实现ListView的条目下自动隐藏显示Button的方法
  9. 第三章:Creating Applications and activities-(八)深入了解Andro

随机推荐

  1. Android 图片添加水印图片或者文字
  2. 点击或长按的Android Listview用户交互设
  3. Android Toolbar返回按钮颜色修改
  4. studio更新时候,不小心点了ignore,无法更新
  5. Android中的硬件加速
  6. Android4.1.1引起Cannot draw recycled b
  7. 如何获取Android ANR log和 userspace
  8. android-----IPC机制学习总结系列(一)
  9. Android Studio混淆模板及常用第三方混淆
  10. Linux Kernel and Android 休眠与唤醒(中