读书人

java反照技术说明

发布时间: 2012-11-08 08:48:11 作者: rapoo

java反射技术说明

????? java反射在java的学习中是一个比较难理解的技术.举个例子可以更加清楚的说明:

先写一个User类:

package nit.system.check;import java.lang.reflect.Constructor;import java.lang.reflect.Method;/** * @author geekwang * */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();}}

?

1 楼 congjl2002 2008-07-21 直接new出来不好吗? 2 楼 wuhua 2008-07-21 哈哈。new是可以,不过有很多时候还是需要这种技术来做动态语言的效果的 3 楼 laogao3232 2008-07-21 反射就这么简单,曾经看了一篇讲解的,太长,太复杂。这个好。
不过不是很理解!我去查api! 4 楼 bibiye 2008-07-21 写GEN CODE用反射还行,运行时最好不要去用,效率比较低。 5 楼 spacefly 2008-07-22 不错,简单明了

读书人网 >软件架构设计

热点推荐