A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© .Mr 中级黑马   /  2014-5-22 19:23  /  3951 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 .Mr 于 2014-5-23 14:00 编辑

比如说这里,已知Test这个类,需要使用反射手段创建该类的对象, 并调用该对象中的方法。
class Test {
public void show() {
  System.out.println("调用方法啦");
}
}
我这里是这种写法:
public static void main(String[] args) {
Class<Test> clazz = Test.class;// 获取Test类的字节码,其他2种方式也行,那具体什么情况用呢?
Test test = clazz.newInstance();
   // 判断获得名为show的方法和参数的个数并调用
   Method[] methods = clazz.getMethods();
   for (Method method : methods) {   //这里我获取到方法,我感觉可以直接调用,不需要判断;什么情况下,我该去遍历判断
    Class[] c = method.getParameterTypes();
    if (method.getName().equals("show")) {
     if (c.length == 0)
      method.invoke(test);
    }
   }
}   

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 朱晓盼 于 2014-5-22 23:09 编辑

俺觉得吧,临场发挥才是王道,具体情况具体对待,这样说可能比较空泛,
下面是我在张老师总结的基础上加上的东西,希望对你有帮助。:)
/----------------------------------------------------------------------------/
获取字节码对应的实例对象的三种方法:
1.类名.class,例如,System.class  通常用于获取已知类或者类型的.class文件
2.对象.getClass(),例如,new Date().getClass()    通常用于获取自定义对象的.class文件方法所属类:
|--java.lang.Object
|--|--class<?> getClass()  返回object的运行时类

3.Class.forName("类名"),例如,Class.forName("java.util.Date")  通常用于获取API文档中的.class文件
方法所属类:
|--java.lang.Class
|--|--static Class<?> forName(String className)  返回与带有给定字符串名的类或接口相关联的 Class 对象。
/-------------------------------------------------------------------------------------------------------------------------------/


有不同意见希望补充:handshake






评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
朱晓盼 发表于 2014-5-22 20:30
俺觉得吧,临场发挥才是王道,具体情况具体对待,这样说可能比较空泛,
下面是我在张老师总结的基础上加上 ...

谢谢啦,清晰明了
回复 使用道具 举报
。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马