黑马程序员技术交流社区

标题: 通过反射获取实体类中的方法,这两种方式有什么区别? [打印本页]

作者: 任我行    时间: 2015-1-7 17:27
标题: 通过反射获取实体类中的方法,这两种方式有什么区别?
本帖最后由 任我行 于 2015-1-8 10:47 编辑
  1. package com.itheima.test;
  2. import java.lang.reflect.Constructor;
  3. import java.lang.reflect.Method;

  4. public class Test2
  5. {
  6.         /**
  7.          * 编写一个类,增加一个实例方法用于打印一条字符串。并使用反射手段创建该类的对象, 并调用该对象中的方法。##
  8.          */
  9.         
  10.         public static void main(String[] args) throws Exception
  11.         {
  12.                 //方式一
  13.                  Class<?> class1 = Class.forName("com.itheima.test.Demo");
  14.                  Constructor<?> con =class1.getConstructor();
  15.                  Demo demo  = (Demo)con.newInstance();
  16.                  Method method = class1.geMethod("show");
  17.                  method.invoke(demo);
  18.                  //方式二
  19.                  Class<?>class2 = Class.forName("com.itheima.test.Demo");
  20.                  Method method1 =class2.getMethod("show");
  21.                  method1.invoke(null);
  22.         }
  23. }

  24. //实体类
  25. package com.itheima.test;
  26. public  class Demo
  27. {
  28.                 public static void  show()
  29.                 {
  30.                         System.out.println("反射調用該方法");
  31.                 }
  32. }
复制代码



作者: 小僧玄奘    时间: 2015-1-7 22:13
类型不同啊
作者: huduzhi    时间: 2015-1-8 01:33
getDeclaredMethod可以获得private方法。 getMethod只能获取类的公有方法。
作者: 任我行    时间: 2015-1-8 10:46
标题: 代码有点误解,我想问的是下面这两种方式有什么区别
  1.         public static void main(String[] args) throws Exception
  2.         {
  3.                 //方式一
  4.                  Class<?> class1 = Class.forName("com.itheima.test.Demo");
  5.                  Constructor<?> con =class1.getConstructor();
  6.                  Demo demo  = (Demo)con.newInstance();
  7.                  Method method = class1.getMethod("show");
  8.                  method.invoke(demo);
  9.                  
  10.                  //方式二
  11.                  Class<?>class2 = Class.forName("com.itheima.test.Demo");
  12.                  Method method1 =class2.getMethod("show");
  13.                  method1.invoke(null);
  14.                  
  15.         }
复制代码






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