黑马程序员技术交流社区

标题: 控制台输入类名,反射类中的方法; [打印本页]

作者: 郑飞    时间: 2014-10-3 01:21
标题: 控制台输入类名,反射类中的方法;
本帖最后由 郑飞 于 2014-10-25 11:53 编辑
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.lang.reflect.Method;

  4. public class SysinReflect {
  5.         /**
  6.          * 接收控制台输入的一个类名(这个类事先定义好),通过反射创建这个类的对象并调用里面的方法;
  7.          * @throws Exception
  8.          */
  9.         public static void main(String[] args) throws Exception
  10.         {
  11.                 String classname = "BeReflect";//定义用于比较类名的字符串;
  12.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  13.                 String line = null;
  14.                 System.out.println("InPut A ClassName(exit whit \"end\"):");
  15.                 while((line = br.readLine())!=null)
  16.                 {
  17.                         if(line.equals(classname))
  18.                         {
  19.                                 //进行反射
  20.                                 Class c = Class.forName(line);
  21.                                 Method m = c.getMethod("test", null);
  22.                                 m.invoke(c.newInstance(), null);
  23.                         }else if(line.equalsIgnoreCase("end"))
  24.                         {
  25.                                 System.out.println("exit");
  26.                                 break;
  27.                         }
  28.                         else
  29.                                 System.out.println("ClassNotFound,InPut Again:");
  30.                 }
  31.                 br.close();
  32.         }
  33. }
  34. class BeReflect
  35. {
  36.         public void test()
  37.         {
  38.                 System.out.println("i'm reflect!");
  39.         }
  40. }
复制代码


作者: JerryJava    时间: 2014-10-3 06:11
哥,2am...珍惜身体资源。祝好。
作者: 郑飞    时间: 2014-10-3 14:52
JerryJava 发表于 2014-10-3 06:11
哥,2am...珍惜身体资源。祝好。

呵呵 一定一定 谢谢
作者: 354620815    时间: 2014-10-3 20:53
知道怎么反射main()主函数?
作者: 郑飞    时间: 2014-10-3 21:40
354620815 发表于 2014-10-3 20:53
知道怎么反射main()主函数?

好像在哪个视频里有的:
                Class clazz = 类名.class;
                Method method = clazz.getMethod("main",String[].class);
                method.invoke(null, (Object)new String[]{字符串参数1,字符串参数2...});




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