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

反照类的构造函数

2013-02-24 
反射类的构造函数Person.javapackage com.feng.reflectimport java.awt.Listimport java.lang.reflect.C

反射类的构造函数

Person.java

package com.feng.reflect;import java.awt.List;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import java.util.ArrayList;import org.junit.Test;//反射类的构造函数,创建类的对象public class Demo2 {//反射类的构造函数:public person()@Testpublic void test1() throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{Class clazz = Class.forName("com.feng.reflect.Person");Constructor c = clazz.getConstructor(null);Person person = (Person)c.newInstance(null);System.out.println(person.name);}//反射类构造函数:public person(String name)@Testpublic void test2()throws Exception{Class clazz = Class.forName("com.feng.reflect.Person");Constructor c = clazz.getConstructor(String.class);Person p = (Person) c.newInstance("xxx");System.out.println(p.name);}//反射类构造函数:public person(String name,int password)@Testpublic void test3()throws Exception{Class clazz = Class.forName("com.feng.reflect.Person");Constructor c = clazz.getConstructor(String.class,int.class);Person p = (Person)c.newInstance("xxx",12);System.out.println(p.name);}//private Person(List list)@Testpublic void test4()throws Exception{Class clazz = Class.forName("com.feng.reflect.Person");Constructor c = clazz.getDeclaredConstructor(List.class);c.setAccessible(true);//暴力反射,,,,需注意!!Person p = (Person) c.newInstance(new ArrayList());System.out.println(p.name);}//创建对象的另一种途径@Testpublic void test5() throws Exception{Class clazz = Class.forName("com.feng.reflect.Person");Person  p = (Person)clazz.newInstance();//其实原理就是反射出这个类的无参构造函数进行构造,//这就是为什么当你创建了有参构造函数后,一定要创建一个无参的构造函数System.out.println(p.name);}}


热点排行