2008-07-20
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();
}
}
评论
spaceflysky@163.com
2008-07-22
不错,简单明了
bibiye
2008-07-21
写GEN CODE用反射还行,运行时最好不要去用,效率比较低。
laogao3232
2008-07-21
反射就这么简单,曾经看了一篇讲解的,太长,太复杂。这个好。
不过不是很理解!我去查api!
不过不是很理解!我去查api!
wuhua
2008-07-21
哈哈。new是可以,不过有很多时候还是需要这种技术来做动态语言的效果的
congjl2002
2008-07-21
直接new出来不好吗?
发表评论
- 浏览: 741 次
- 性别:

- 来自: 宁波

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
java反射技术说明
不错,简单明了
-- by spaceflysky@163.com -
java反射技术说明
写GEN CODE用反射还行,运行时最好不要去用,效率比较低。
-- by bibiye -
java反射技术说明
反射就这么简单,曾经看了一篇讲解的,太长,太复杂。这个好。 不过不是很理解!我去 ...
-- by laogao3232 -
java反射技术说明
哈哈。new是可以,不过有很多时候还是需要这种技术来做动态语言的效果的
-- by wuhua -
java反射技术说明
直接new出来不好吗?
-- by congjl2002






评论排行榜