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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fmi110 高级黑马   /  2015-9-21 10:53  /  263 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

a
  1. package demo.reflect;

  2. import java.lang.reflect.Constructor;

  3. public class Test {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) throws Exception {
  8.                 // 通过反射获取字节码文件对象
  9.                 Class c = Class.forName("demo.reflect.People");
  10.                 //获取构造函数,所有声明的构造函数
  11.                 Constructor[] cons = c.getDeclaredConstructors();
  12.                 for(Constructor con :cons)
  13.                         System.out.println(c.getPackage()+"..."+con);       
  14.                 //通过构造函数创建新的实例
  15.                 Constructor con = c.getDeclaredConstructor();
  16.                 People p = (People)con.newInstance();
  17.                 System.out.println(p);
  18.                 //带参的构造函数构造实例
  19.                 Constructor con1 = c.getDeclaredConstructor(String.class,int.class);
  20.                 People p1 = (People)con1.newInstance("Lily",18);
  21.                 System.out.println(p1);
  22.                
  23.                 Constructor con2 = c.getDeclaredConstructor(String.class,int.class,String.class);
  24.                 con2.setAccessible(true);//用私有的构造函数时,需要取消语言检查
  25.                 People p2 = (People)con2.newInstance("Lily",18,"来宾");
  26.                 System.out.println(p2);
  27.         }

  28. }
复制代码


3 个回复

正序浏览
学习了,很详细
回复 使用道具 举报
a
  1. package demo.reflect...private demo.reflect.People(java.lang.String,int,java.lang.String)
  2. package demo.reflect...demo.reflect.People(java.lang.String,int)
  3. package demo.reflect...public demo.reflect.People()
  4. People [name=null, age=0, address=null]
  5. People [name=Lily, age=18, address=null]
  6. People [name=Lily, age=18, address=来宾]
复制代码
回复 使用道具 举报
a
  1. package demo.reflect;

  2. public class People {

  3.         /**
  4.          * 用于反射演示的类
  5.          */
  6.         private String name;
  7.         private int age;
  8.         public String address;

  9.         public People() {
  10.         }
  11.         //修饰符不同
  12.         People(String name, int age) {
  13.                 this.name = name;
  14.                 this.age = age;
  15.         }

  16.         private People(String name, int age, String address) {
  17.                 this.name = name;
  18.                 this.age = age;
  19.                 this.address = address;
  20.         }

  21.         public void show() {
  22.                 System.out.println("show~~");
  23.         }

  24.         public void method(String s) {
  25.                 System.out.println("method" + s);
  26.         }
  27.         @Override
  28.         public String toString() {
  29.                 return "People [name=" + name + ", age=" + age + ", address=" + address
  30.                                 + "]";
  31.         }
  32.        
  33. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马