一直感觉 Java 的反射机制很强大, JAVA 反射技术在平时我们的开发中虽然很少会用到, 但在我们所使用的框架源码中是经常会用到的这篇文中就给大家介绍了关于 Java 中反射的一个简单使用, 有需要的朋友们下面来一起看看吧
简介
首先介绍一些不太实用的解释: JAVA 反射机制是在运行状态中, 对于任意一个类, 都能够知道这个类的所有属性和方法; 对于任意一个对象, 都能够调用它的任意方法和属性; 这种动态获取信息以及动态调用对象方法的功能称为 java 语言的反射机制
简单使用
反射, 在 java 中是非常常见和好用的一种方式,(但是大家需要知道, 他的效率是比较低的, 所以要慎用)当然在基于 java 语言而产生的 Android 中也是可以使用的, 我们可以使用反射来获取一些系统并不开放, 但是存在的类, 从而调用他的一些方法, 下面就简单的写一下, 利用 java 反射来获取类和调用它的方法的实现
- // 需要被反射调用的类的路径
- String className = "com.example.test.JavaReflect";
- Class reflect = null;
- try {
- // 通过路径来获取 java 类
- reflect = Class.forName(className);
- // 实例化对应得类
- Object javaReflect = reflect.newInstance();
- if (null != javaReflect) {
- // 反射出该 Class 类中的 stringToUp()方法 stringToUp 是方法名, String.class 是参数类型
- Method stringToUp = reflect.getDeclaredMethod("stringToUp", String.class);
- // 取消访问私有方法的合法性检查
- stringToUp.setAccessible(true);
- // 调用 stringToUp()方法, 第一个参数表示对应的类, 第二个是方法的参数
- String str = (String) stringToUp.invoke(javaReflect, "java reflect test");
- System.out.println("result:" + str);
- }
- } catch(Exception e) {
- e.printStackTrace();
- }
我们来看一下, 在 stringToUp 里面做了什么:
- public String stringToUp(String str){
- return str.toUpperCase();
- }
其实就是一个对字符串转换成大写, 然返回, 好了我们来看一下输出结果:
01-02 08:09:11.959 6150-6150/com.zxf.alpha I/System.out: result:JAVA REFLECT TEST
简直就是完美
总结
好了, 以上就是这篇文章的全部内容了, 反射在 Android 中的应用范围也很多, 比如我们项目有多个 module 的时候, 你想在 module 里面调用主的程序的一个方法你就可以这么干, 也可以用反射来调用一些系统为公开的方法, 但是效率不太高希望本文的内容对大家学习或者使用 Java 中的放射能有所帮助, 如果有疑问大家可以留言交流
来源: http://www.phperz.com/article/18/0227/359408.html