|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
前些天,在CSDN上看到了一个消息,说是net网页编程网页编程AJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。
Reflection是Java程序开辟言语的特性之一,它同意运转中的Java程序对本身举行反省,大概说"自审",并能间接操纵程序的外部属性。比方,利用它能取得Java类中各成员的称号并显现出来。
Java的这一才能在实践使用中大概用得不是良多,可是在别的的程序计划言语中基本就不存在这一特征。比方,Pascal、C大概C++中就没有举措在程序中取得函数界说相干的信息。
JavaBean是reflection的实践使用之一,它能让一些工具可视化的操纵软件组件。这些工具经由过程reflection静态的载进并获得Java组件(类)的属性。
1.一个复杂的例子
思索上面这个复杂的例子,让我们看看reflection是怎样事情的。
importjava.lang.reflect.*;
publicclassDumpMethods{
publicstaticvoidmain(Stringargs[]){
try{
Classc=Class.forName(args[0]);
Methodm[]=c.getDeclaredMethods();
for(inti=0;i<m.length;i++)
System.out.println(m[i].toString());
}catch(Throwablee){
System.err.println(e);
}
}
}
按以下语句实行:
javaDumpMethodsjava.util.Stack
它的了局输入为:
publicjava.lang.Objectjava.util.Stack.push(java.lang.Object)
publicsynchronizedjava.lang.Objectjava.util.Stack.pop()
publicsynchronizedjava.lang.Objectjava.util.Stack.peek()
publicbooleanjava.util.Stack.empty()
publicsynchronizedintjava.util.Stack.search(java.lang.Object)
如许就列出了java.util.Stack类的各办法名和它们的限定符和前往范例。
这个程序利用Class.forName载进指定的类,然后挪用getDeclaredMethods来猎取这个类中界说了的办法列表。java.lang.reflect.Methods是用来形貌某个类中单个办法的一个类。
2.入手下手利用Reflection
用于reflection的类,如Method,能够在java.lang.relfect包中找到。利用这些类的时分必需要遵守三个步骤:第一步是取得你想操纵的类的java.lang.Class对象。在运转中的Java程序中,用java.lang.Class类来形貌类和接口等。
上面就是取得一个Class对象的办法之一:
Classc=Class.forName("java.lang.String");
这条语句失掉一个String类的类对象。另有另外一种办法,以下面的语句:
Classc=int.class;
大概
Classc=Integer.TYPE;
它们可取得基础范例的类信息。个中后一种办法中会见的是基础范例的封装类(如Integer)中事后界说好的TYPE字段。
<p>
J2ME在手机游戏开发的作用也是无用质疑的。至于桌面程序,可能有人说java不行,界面不好看,但是请看看net网页编程Beans和Eclipse吧,他们都是利用java开发的,而他们的界面是多么的华丽,所以界面决不是java的缺点。还有一个不得不提的优点就是大多java人员都挂在嘴边的java的跨平台性,目前这确实也是java优点之一。 |
|