黑马程序员技术交流社区

标题: 分享一个面试题。这是我血淋淋的教训啊 [打印本页]

作者: 毅心缘    时间: 2014-7-3 18:37
标题: 分享一个面试题。这是我血淋淋的教训啊
  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. }
复制代码

加油吧
作者: L.sam    时间: 2014-7-3 18:46
怎么了?没过吗?还是扣分了?
作者: 毅心缘    时间: 2014-7-3 19:21
L.sam 发表于 2014-7-3 18:46
怎么了?没过吗?还是扣分了?

技术不过关啊。挂了
作者: wisely    时间: 2014-7-3 19:25
入学面试还是求职面试?
作者: 毅心缘    时间: 2014-7-3 19:27
wisely 发表于 2014-7-3 19:25
入学面试还是求职面试?

入学面试啊
作者: wisely    时间: 2014-7-3 19:29
毅心缘 发表于 2014-7-3 19:27
入学面试啊

入学考了反射,表示反射不懂,还得努力啊
作者: L.sam    时间: 2014-7-4 09:26
毅心缘 发表于 2014-7-3 19:21
技术不过关啊。挂了

汗。。。我马上面试。。。感觉压力大。。。
作者: Whero    时间: 2014-7-4 09:55
额。楼主怎么挂的?
作者: blz01003hm    时间: 2014-7-4 09:57
表示反射不懂。。。
作者: 寐海流风    时间: 2014-7-4 10:11
反射获得目标类的方法,不用写那么麻烦吧。直接:
getMethod("printStr",String.class);就可以吧。
作者: 215041631    时间: 2014-7-4 10:40
反射是哪位位置的视频啊
作者: SLJ_920808    时间: 2014-7-4 10:42
感觉好难,还没看到呢。
作者: 心者觉也    时间: 2014-7-4 10:44
反射都木有看呢,不懂~~~~
作者: 王振2014    时间: 2014-7-4 11:03
楼主你都实例化一个对象了,可以直接用对象调用方法吧,不用在获得方法的字节码对象了吧。
作者: 来自沙沙的我    时间: 2014-7-4 12:19
考哪期的?挂了没有现在应该还没有通知吧,说不定就上了。

我考的38期,昨天通知的上了。
作者: 790324255a    时间: 2014-7-4 14:25
可以不用写那么多 用Class中getMethod方法获取指定方法名和参数 可以省下代码量
作者: 执笔梦    时间: 2014-7-4 17:03
你都知道方法名和参数了..不用这么麻烦
作者: 无所谓啦    时间: 2014-8-27 08:37
黑马  太难了   ,零基础学得很苦闷啊
作者: 文森    时间: 2015-5-10 12:41
入学考试考很多反射




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2