黑马程序员技术交流社区

标题: 反射疑惑 [打印本页]

作者: 当我遇上你    时间: 2015-1-14 22:33
标题: 反射疑惑
本帖最后由 当我遇上你 于 2015-1-14 23:01 编辑
  1. package Test;

  2. import java.lang.reflect.Method;
  3. import java.util.Scanner;
  4. import java.util.jar.Attributes.Name;

  5. /*编写一个类A,增加一个实力方法showString,
  6. * 用于打印一条字符串,在编写一个类TestA ,作为客户端,
  7. * 用键盘输入一个字符串,该字符串就是类A的全名,
  8. * 使用反射机制创建该类的对象,并调用该对象中的方法showString */

  9. public class Test4 {

  10.         public static void main(String[] args) throws Exception {
  11.                 Scanner scanner = new Scanner("Test.DemoTest");
  12.                 String str = scanner.nextLine();
  13.                 String[] str1=str.split("\\.");
  14.                 String name=str1[1];
  15.                 Class clazz=name.class;
  16.                 Object instance = clazz.newInstance();
  17.                 Method method = clazz.getMethod("showString", String.class);
  18.                 method.invoke(instance, "abc");
  19.         }

  20. }
  21. class DemoTest
  22. {
  23.         public static void showString(String str)
  24.         {
  25.                 System.out.println(str);
  26.         }
  27. }
复制代码

一道关于反射的题目:
编写一个类A,增加一个实力方法showString,用于打印一条字符串,在编写一个类TestA ,作为客户端,用键盘输入一个字符串,该字符串就是类A的全名,使用反射机制创建该类的对象,并调用该对象中的方法showString
以下是我写的代码,但是键盘输入的是String,如何让计算机把它当做类名呢?










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