分享

Java反射机制

 Sunny_Gql 2012-03-30
今天有一个这样的需求:
在XML里面写上方法的名称,在代码里进行解析这个XML得到用户自定义的接口类,然后调用对应的方法;
 
这个我先用 Jdom进行解析XML的,得到相应的方法名称,得到的是一个String格式的,接着就遇到了String转换成Class类的问题,网上搜索了一下,找到相应的技术,Java反射机制,看来还是自己技术不到家啊,到现在还不知道Java反射机制呢,汗啊。于是花费了一点点的时间进行了补充学习一下,用到的只是基本在这里,拿出来进行记录一下,也分享给各位观众,有用得着的尽量拿去。 
String JavaName = "com.geezn.mobile.action.RqMobileLogin";
  
1:通过变量得到类名
 Class stringType = "".getClass();
   System.out.println(stringType);
 输出时class java.lang.String

 2:由名字获得类
 Class<?> c = null;
try {
 c = Class.forName(JavaName);
 } catch (ClassNotFoundException e) {
TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(c);
输出 class com.geezn.mobile.action.RqMobileLogin
  
3:无参数的调用方法
try {
      // 获取class文件
 Class<?> t_class = Class.forName(JavaName);
    // 获取该类所需求的方法
    Method method = t_class.getDeclaredMethod("test");
     method.invoke(t_class.newInstance());// 方法的实现
    } catch (Exception e) {
    e.printStackTrace();
    }
4:有参数的调用方法
String result = "";
   try {
      // 获取class文件
      Class<?> t_class = Class.forName(JavaName);
       // 获取该类所需求的方法
       Method method = t_class.getDeclaredMethod("test",String.class,String.class);
      result = (String) method.invoke(t_class.newInstance(),"参数1","参数2");// 方法的实现
     } catch (Exception e) {
     e.printStackTrace();
     }
    System.out.println("返回的数据=====" + result);

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多