A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Ethan丶 中级黑马   /  2015-9-21 00:22  /  308 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以Person为例
  1. package com.reflect.constructor;

  2. /*
  3. *
  4. */
  5. import java.lang.reflect.Constructor;

  6. public class ReflectDemo2 {
  7.         public static void main(String[] args) throws Exception {
  8.                 /*
  9.                  * 1.public Person
  10.                  */
  11.                 // 获取字节码文件对象
  12.                
  13.                  Class c6 = Class.forName("com.reflect.Person"); // 获取代参构造方法对象
  14.                  Constructor con = c6.getConstructor(String.class, int.class,
  15.                                                                          String.class);
  16.                  // 通过代参构造方法创建对象
  17.                  // public T newInstance(Object...initargs)
  18.                  Object obj = con.newInstance("奥巴马",44, "美国");
  19.                  System.out.println(obj);
  20.                  
  21.                 /*
  22.                  * 2.private Person
  23.                  */
  24.                 Class c7 = Class.forName("com.reflect.Person");
  25.                 Constructor con1 = c7.getDeclaredConstructor(String.class);
  26.                 con1.setAccessible(true);
  27.                 Object obj1 = con1.newInstance("普京");
  28.                 System.out.println(obj1);
  29.         }
  30. }
复制代码

2 个回复

倒序浏览
  1.                 Class c1=Class.forName("com.reflect.field.Person");
  2.                 //构造方法

  3.                 Constructor con = c1.getDeclaredConstructor();
  4.                 Object obj = con.newInstance();
  5.                 Field addressField=c1.getField("address");
  6.                 //反射  逆向
  7.                 addressField.set(obj, "北京");
  8.                 System.out.println(obj);
复制代码
回复 使用道具 举报
这个是获取一个类的实例对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马