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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package com.day;

  2. import java.lang.reflect.InvocationTargetException;
  3. import java.lang.reflect.Method;

  4. public class Test4 {

  5.         /**
  6.          * 编写一个类,增加一个实例方法用于打印一条字符串。 并使用反射手段创建该类的对象, 并调用该对象中的方法。
  7.          */

  8.         public static void main(String[] args) {
  9.                 try {
  10.                         ReflectionTestDemo r = ReflectionTestDemo.class.newInstance();
  11.                         String str = "Hello,Reflection";
  12.                         Method[] ms = ReflectionTestDemo.class.getMethods();
  13.                         for (Method m : ms) {
  14.                                 if (m.getName().equals("printStr")) {
  15.                                         Class[] cs = m.getParameterTypes();
  16.                                         if (cs.length == 1) {
  17.                                                 for (Class c : cs) {
  18.                                                         if (c.getName().equals(String.class.getName())) {
  19.                                                                 m.invoke(r, str);
  20.                                                         }
  21.                                                 }
  22.                                         }
  23.                                 }
  24.                         }

  25.                 } catch (InstantiationException | IllegalAccessException e) {
  26.                         e.printStackTrace();
  27.                 } catch (IllegalArgumentException e) {
  28.                         e.printStackTrace();
  29.                 } catch (InvocationTargetException e) {
  30.                         e.printStackTrace();
  31.                 }
  32.         }

  33. }

  34. class ReflectionTestDemo {
  35.         public void printStr(String str) {
  36.                 System.out.println(str);
  37.         }
  38. }
复制代码

加油吧

18 个回复

倒序浏览
怎么了?没过吗?还是扣分了?
回复 使用道具 举报
L.sam 发表于 2014-7-3 18:46
怎么了?没过吗?还是扣分了?

技术不过关啊。挂了
回复 使用道具 举报
入学面试还是求职面试?
回复 使用道具 举报
wisely 发表于 2014-7-3 19:25
入学面试还是求职面试?

入学面试啊
回复 使用道具 举报

入学考了反射,表示反射不懂,还得努力啊
回复 使用道具 举报
毅心缘 发表于 2014-7-3 19:21
技术不过关啊。挂了

汗。。。我马上面试。。。感觉压力大。。。
回复 使用道具 举报
额。楼主怎么挂的?
回复 使用道具 举报
表示反射不懂。。。
回复 使用道具 举报
反射获得目标类的方法,不用写那么麻烦吧。直接:
getMethod("printStr",String.class);就可以吧。
回复 使用道具 举报
反射是哪位位置的视频啊
回复 使用道具 举报
感觉好难,还没看到呢。
回复 使用道具 举报
反射都木有看呢,不懂~~~~
回复 使用道具 举报
楼主你都实例化一个对象了,可以直接用对象调用方法吧,不用在获得方法的字节码对象了吧。
回复 使用道具 举报
考哪期的?挂了没有现在应该还没有通知吧,说不定就上了。

我考的38期,昨天通知的上了。
回复 使用道具 举报
可以不用写那么多 用Class中getMethod方法获取指定方法名和参数 可以省下代码量
回复 使用道具 举报
你都知道方法名和参数了..不用这么麻烦
回复 使用道具 举报
黑马  太难了   ,零基础学得很苦闷啊
回复 使用道具 举报
入学考试考很多反射
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马