java反射在java的学习中是一个比较难理解的技术.举个例子可以更加清楚的说明:
先写一个User类:
- package nit.system.check;
-
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Method;
-
-
-
-
-
- class User{
- private String userName;
- private String address;
-
- public User(){
-
- }
-
- public User(String userName,String address){
- this.userName=userName;
- this.address=address;
- }
-
- public void write(){
- System.out.println("userName:"+userName);
- System.out.println("address:"+address);
- }
- }
上面是一个很普通的类,有userName和address两个属性,还有打印用户姓名和地址的write方法.
接下来就是用反射技术来实现对User的应用.这样的话,我们就可以很轻松的把类,属性以及方法从客户端的代码中抽取出来,可以放在配置文件中读取到客户端进行调用,也就很大程序上减少了耦合,事实上目前的很多框架也是这么做的.
- public class ReflectTest {
- public static void main(String args[]) throws Exception{
- Class c=Class.forName("nit.system.check.User");
-
- Constructor constructor=c.getConstructor(new Class[]{Class.forName("java.lang.String"),Class.forName("java.lang.String")});
-
- Object obj=constructor.newInstance(new Object[]{"geekwang","ningbo"});
-
- Method method=c.getMethod("write", new Class[]{});
-
- method.invoke(obj, new Object[]{});
-
-
- User print=new User("geekwang","ningbo");
- print.write();
- }
- }
文章转载于:http://geekwang.iteye.com/blog/216705
阅读(741) | 评论(0) | 转发(0) |