Java之反射类的构造函数,通过单元测试反射创建类的对象
来源:互联网 发布:rnm网络是什么意思 编辑:程序博客网 时间:2024/06/06 07:30
需要测试的Person类的源代码如下:
package cn.itcast.reflect;import java.util.List;public class Person {public String name="wpc";public Person() {System.out.println("无参构造函数");}public Person(String name){System.out.println("参数为name的构造函数");}public Person(String name,int pass){System.out.println("参数为name,pass的构造函数");}//私有的构造函数,通过反射的setAccessible(true)设置它可以被外部访问private Person(List list){System.out.println("参数为list集合的构造函数");}}
通过反射创建对象的测试类的源代码:
package cn.itcast.reflect;import java.lang.reflect.Constructor;import java.util.ArrayList;import java.util.List;import org.junit.Test;//反射(解剖)类的构造函数,创建类的对象public class ReflectPerson {//反射构造函数:public Person()@Testpublic void test1() throws Exception {//反射是做框架用的,框架的一个特点:基于配置文件//以后只要在配置文件里面一配置,框架就出来了//反射的第一步,把类加载到内存里面去Class clazz = Class.forName("cn.itcast.reflect.Person");Constructor c = clazz.getConstructor(null);//調用无参数的构造函数Person p = (Person)c.newInstance(null);//new对象System.out.println(p.name);//下面的注释和反射的输出效果一样,但后面做框架时就不合适了!!!//Person p2 = new Person();//System.out.println(p2.name);}//反射构造函数:public Person(String name)@Testpublic void test2() throws Exception{Class clazz = Class.forName("cn.itcast.reflect.Person");Constructor c = clazz.getConstructor(String.class);//需要指定构造函数的参数类型为String,不然的话构造函数又有int类型的name,又有Stirng类型的namePerson p = (Person)c.newInstance("x2");System.out.println(p.name);}//反射构造函数:public Person(String name,int pass)@Testpublic void test3() throws Exception{Class clazz = Class.forName("cn.itcast.reflect.Person");Constructor c = clazz.getConstructor(String.class,int.class);//new实例对象Person p = (Person)c.newInstance("x3",123);System.out.println(p.name);}@Testpublic void test4() throws Exception{Class clazz = Class.forName("cn.itcast.reflect.Person");//注意测试的这个构造函数是private的//Constructor c = clazz.getConstructor(List.class);private的构造方法不能这样写,抛出NoSuchMethodExceptionConstructor c = clazz.getDeclaredConstructor(List.class);//不管你的构造函数是什么访问权限,我强制给你打开这个访问权限c.setAccessible(true);//暴力反射 注释这一行的话就不行,抛异常Person p = (Person)c.newInstance(new ArrayList());System.out.println(p.name);}//创建对象的另外一种途径 以下代码等效于test1方法@Testpublic void test5() throws Exception{Class clazz = Class.forName("cn.itcast.reflect.Person");//其实就是反射类的无参的构造函数创建对象Person p = (Person)clazz.newInstance();//Person类里面必须要有一个无参的构造函数System.out.println(p);}//面试题:私有的东西可以被外部访问吗? 先说私有的东西只能被内部访问,但是反射可以}
0 0
- Java之反射类的构造函数,通过单元测试反射创建类的对象
- 反射第三步 : 通过反射获取某一个类的 构造器Constructor 并通过反射创建对象
- 通过Java反射机制构造类的对象
- java反射机制 以及通过反射获得类的变量字段,方法,构造函数
- java反射机制 以及通过反射获得类的变量字段,方法,构造函数
- 通过反射获取类对象的成员函数、成员变量(只获取成员函数)、构造函数
- 通过构造函数反射--通过一个对象获取一个完整的包名和类名
- 反射类的构造函数
- 反射 类的构造函数
- 利用反射调用带参数的构造函数创建对象
- 通过反射构造一个类的实例
- Java中通过反射获取类的信息(方法名,参数,构造函数等)
- 通过反射可以获取Class的构造方法 通过构造方法创建对象
- 关于java 反射 创建对象 调用 有参数 的 构造函数
- 通过Java的反射机制创建运行时类的对象并调用其结构
- java基础之通过反射获得和使用类的字段、方法、构造器,等
- 利用类反射构造新的对象
- Java反射---Class对象,获得类的方法、成员变量和构造函数信息
- mapreduce中控制mapper的数量
- windows系统漏洞挖掘技术
- 算法导论第四章:最大子数组—递归,暴力和线性算法
- SELECT语句中的for update的用法
- PAT 三角形判断 Java版本
- Java之反射类的构造函数,通过单元测试反射创建类的对象
- 继续刷水题= =||分拆素数和 HDU 2098
- Android中的Bitmap集锦
- 数据结构的重要性
- Oracle的共享锁和排它锁
- html5(历史管理)
- servlet验证码
- popViewControllerAnimated 之后不走deallloc的几个原因:
- Java向前引用容易出错的地方