码迷,mamicode.com
首页 > 其他好文 > 详细

反射(1)—反射类的构造方法

时间:2014-09-29 20:40:11      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   java   for   sp   div   

直接上源码:

 1 package reflex;
 2 
 3 import java.util.List;
 4 
 5 /**利用反射实例化对象*/
 6 public class Person {
 7     public Person(){
 8         System.out.println("调用无参构造器");
 9     }
10     
11     public Person(String name){
12         System.out.println(name);
13     }
14     
15     public Person(String name,int age){
16         System.out.println(name+":"+age);
17     }
18     /**私有构造方法,外部不能调用,但是可以通过反射调用*/
19     private Person(List list){
20         System.out.println("调用私有的无参构造器");
21     }
22 }
 1 package reflex;
 2 
 3 import java.lang.reflect.Constructor;
 4 import java.util.ArrayList;
 5 import java.util.List;
 6 
 7 import org.junit.Test;
 8 /**
 9  * 1.getConstructor 返回符合参数的public构造器
10  * 2.getDeclaredConstructor 返回符合参数的构造器
11  * 3.setAccessible 暴力反射,可以用私有的构造器创建对象实例
12  */
13 public class TestReflex {
14     @Test
15     public void test1() throws Exception{
16         Class clazz = Class.forName("reflex.Person");
17         Constructor constructor = clazz.getConstructor(null);
18         Person person = (Person) constructor.newInstance(null);
19     }
20     @Test
21     public void test2() throws Exception{
22         Class clazz = Class.forName("reflex.Person");
23         Constructor constructor = clazz.getConstructor(String.class);
24         Person person = (Person) constructor.newInstance("xiaoxiao");
25     }
26     @Test
27     public void test3() throws Exception{
28         Class clazz = Class.forName("reflex.Person");
29         Constructor constructor = clazz.getConstructor(String.class,int.class);
30         Person person = (Person) constructor.newInstance("xiaoxiao",21);
31     }
32     @Test
33     public void test4() throws Exception{
34         Class clazz = Class.forName("reflex.Person");
35         Constructor constructor = clazz.getDeclaredConstructor(List.class);
36         constructor.setAccessible(true);//暴力反射,可以用私有的构造器创建对象实例
37         Person person = (Person) constructor.newInstance(new ArrayList());
38     }
39 }

 

反射(1)—反射类的构造方法

标签:style   blog   color   io   ar   java   for   sp   div   

原文地址:http://www.cnblogs.com/miyin/p/4000876.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!