首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java反照介绍之二 -解剖构造器

2012-12-21 
Java反射介绍之二------解剖构造器一个类有多个组成部分,例如:成员变量,方法,构造方法等。反射就是加载类,

Java反射介绍之二 ------解剖构造器

    一个类有多个组成部分,例如:成员变量,方法,构造方法等。反射就是加载类,并解剖出类的各个组成部分。下面就详细介绍构造器器解剖的方法。    案例如下:首先创建一个普通的Java类Student类,该类位于cn.csdn.reflect包中并编译产生相应的class文件.下面就是该类中各种构造器解剖的方式如下:

   //第一:怎么知道 Student类中有哪些构造器呢?方法如下:@Testpublic void test3()throws Exception{//1、加载类 ("cn.csdn.reflect.Student"为包名和类名)Class cls = Class.forName("cn.csdn.reflect.Student");//2、获取加载类中的所有的构造器Constructor csr[] = cls.getConstructors();//3、遍历构造器csrfor(Constructor c:csr){//打印出构造器参数的类型及构造器名称 System.out.println(c.toGenericString());}// 解析:public Student()构造器@Testpublic void test1() throws Exception{// 1、加载类   ("cn.csdn.reflect.Student"为包名和类名)Class cls = Class.forName("cn.csdn.reflect.Student");// 2、通过无参数的构造器解析Constructor constructor = cls.getConstructor(null);// 3、创建类的实例Student entity = (Student) constructor.newInstance(null);        //4、调用对象的方法entity.study();}//解析:public Student(String name,int age);构造器@Testpublic void test2()throws Exception{//1、加载类 ("cn.csdn.reflect.Student"为包名和类名)Class cls = Class.forName("cn.csdn.reflect.Student");//2、通过带有参数的构造器解析Constructor constructor = cls.getConstructor(String.class,int.class);//3、创建类实例Student entity = (Student)constructor.newInstance("redarmy",90);//4、调用方法entity.study();System.out.println(entity.getName());}     //解析:public cn.csdn.reflect.Student(java.lang.String[])构造器@Testpublic void test4()throws Exception{//1、加载类Class cls = Class.forName("cn.csdn.reflect.Student");//2、根据构造器参数类型获取相应的构造器对象    Constructor csr = cls.getConstructor(String[].class);String str[]={"111","123"};//3、创建实体对象Student entity = (Student)csr.newInstance((Object)str);/*如果以上不明白请参考:Java反射中java.lang.IllegalArgumentException: wrong number of arguments的解析*/[url]http://redarmychen.iteye.com/blog/924134[/url]//4、调用方法entity.study();}//解析 private Student(List list)构造器@Testpublic void test5()throws Exception{//1、加载类Class cls = Class.forName("cn.csdn.reflect.Student");//2、根据构造器参数类型获取相应的构造器对象    Constructor csr = cls.getDeclaredConstructor(List.class);                 //采用此法获取private修饰的构造器csr.setAccessible(true);//强制解析private修饰的构造器//3、创建实体对象Student entity = (Student)csr.newInstance(new ArrayList());//4、调用方法entity.study();}

  以上内容归redarmy_chen原创,版权归redarmy_chen所有不得随意转载  如有问题请发送邮件到redarmy.chen@gmail.com 


!!!

热点排行