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

反射初悟

时间:2015-10-17 17:24:51      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

1.为什么要学习反射

  不要为了学习反射而学习反射,反射只是创建对象的另一种方式

创建对象的几种方式:new 反射  clone  流(webservice/webscoket)

2.下面写了一个示例,模拟框架spring的bean工厂创建对象,调用方法

  反射在框架中时常见的,虽然重要,但是不要被它给迷惑了,戳穿了,

也就是那么一回事。

  记住:反射只是创建对象的另一种方式而已

 1 package com.rui.test;
 2 
 3 public class Person {
 4 
 5     private String name;
 6     private Integer age;
 7     
 8     public Person(){}
 9     public Person(String name,Integer age){
10         this.name = name;
11         this.age = age;
12     }
13     
14     public void study(){
15         System.out.println(this.name+"在"+this.age+"小学毕业");
16     }
17 }


 1 package com.rui.test;
 2 import java.lang.reflect.Constructor;
 3 import java.lang.reflect.Method;
 4 
 5 import org.junit.Test;
 6 
 7 /**
 8  * 
 9  * 反射测试
10  * @author poseidon
11  *
12  */
13 public class RecflectDemo {
14 
15     @Test
16     public void testPerson() throws Exception {
17         //创建对象
18         ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
19         Class clz = classLoader.loadClass("com.rui.test.Person");
20         //解析构造函数
21         Constructor[] constructors = clz.getConstructors();
22         Person person = (Person)constructors[1].newInstance("华罗庚",12);
23         //获得方法并调用
24         Method method = clz.getMethod("study");
25         method.invoke(person);
26     }
27     
28     /**
29      * 封装反射创建对象的方法 
30      * @param packageName
31      * @param args
32      * @return
33      */
34     public static<T> T objectNewInstance(String packageName,Object...args){
35         try {
36             ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
37             Class clz = classLoader.loadClass(packageName);
38             T t = (T)clz.newInstance();
39             return t;
40         } catch (Exception e) {
41             e.printStackTrace();
42             return null;
43         }
44     }
45 }

 

执行后的结果:华罗庚在12小学毕业

反射初悟

标签:

原文地址:http://www.cnblogs.com/sun-rain/p/4887744.html

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