Java反射的简单使用

发表于:2016-12-08 09:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Only凹凸曼    来源:51Testing软件测试网采编

  百度百科
  先来一些不太实用的解释: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里面调用主的程序的一个方法你就可以这么干,也可以用反射来调用一些系统为公开的方法,但是效率不太高。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号