仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 401|回复: 10
打印 上一主题 下一主题

[学习教程] 发布一篇反射基础观点和利用

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:17:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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优点之一。
再见西城 该用户已被删除
沙发
发表于 2015-1-20 19:27:13 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
不帅 该用户已被删除
板凳
发表于 2015-1-28 05:38:47 | 只看该作者
是一种使用者不需花费很多时间学习的语言
爱飞 该用户已被删除
地板
发表于 2015-2-2 21:42:13 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
小女巫 该用户已被删除
5#
发表于 2015-2-4 16:29:31 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
变相怪杰 该用户已被删除
6#
发表于 2015-2-7 23:34:31 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
深爱那片海 该用户已被删除
7#
发表于 2015-2-22 16:18:59 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
透明 该用户已被删除
8#
发表于 2015-2-27 04:12:15 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
若天明 该用户已被删除
9#
发表于 2015-3-3 01:53:17 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
海妖 该用户已被删除
10#
发表于 2015-3-11 08:26:01 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
因胸联盟 该用户已被删除
11#
发表于 2015-3-25 08:31:26 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 13:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表