`
lanceverw
  • 浏览: 44208 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

反射简单实例

阅读更多

step1: 通过Class的静态方法forName获取某一个类,返回一个Class对象

Class cls = Class.forName("fanshe.Customer");

 

step2: 使用getConstructor方法获取类的构造函数
   * 此处getConstructor传入一个参数new Class[]{}
   * 若想获取无参构造函数就传入new Class[]{}
   * 若想获取带参数的构造函数就像下面给出的代码一样写,此处给出的代码传入的是两个String类型的参数,还是使用的Class.forName()来获取
   * 参数的写法需要注意

Constructor cons = cls.getConstructor(new Class[]{Class.forName("java.lang.String"), Class.forName("java.lang.String")});

 

step3:通过调用上一步获得的Constructor实例的newInstance()方法生成一个Object对象实例
   * 同样还是分为无参和有参两种情况:
   * 无参有两种方式:两种方式效果相同
   * 1---Object obj = con.newInstance();
   * 2---Object obj = con.newInstance(new Object[]{});
   * 有参的实例化方式:
   * Object obj = cons.newInstance(new Object[]{"111","222"});

Object obj = cons.newInstance(new Object[]{"111","222"});

 

step4:通过getMethod()方法获取类中的普通方法
   * 第一个String类型的参数指定需获取的普通方法的名称
   * 第二个参数指定此方法的参数,若没有传入参数则填入new Class[]{}*/

Method met = cls.getMethod("printInfo", new Class[]{});

 

step5:方法的调用
   *第一个Object类型的参数表示调用底层方法的对象
   *第二个参数用于方法调用的参数 */

met.invoke(obj, new Object[]{});

 

 

1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics