快速业务通道

循速渐进学用Session Bean(二) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25

JavaBean与Java的Class的关系

时间:2008-05-07

要说Bean,就得提到Introspection和Reflection,还有“动态”。

一般而言,开发者社群说到动态语言,大致认同的一个定义是:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。

尽管在这样的定义与分类下Java不是动态语言,它却有着一个非常突出的动态相关机制(其实C++也是这样的动态机制):Reflection。这个字的意思是“反射、映象、倒影”,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。这种“看透class”的能力(the ability of the program to examine itself)被称为introspection(内省、内观、反省)。Reflection和introspection是常被并提的两个术语。Java中的类都有这样的特点(有时间的话,可以看看Java的Class这个类)。

而JavaBean,首先是JAVA的一个类Class,然后再具有Bean的特点。简单的说,就是符合一定规范(getter和setter的命名与变量名一致)的类。这样的类能够通过Java的reflexion机制,自动获取属性的值。常见的就是一些方法的命名getXXX(),setXXX(),一些事件接收者的注册要遵守一定的规范。

由于JavaBean也是Java的一个Class类,所以JavaBean也有introspection和Reflection的性质。前者Introspection就是类的get和set方法,也就是类设定和获取自身属性值的方法。而后者Reflection就是java程序在运行中检查自己包含对象的能力,即可以在加载对象后获得对象属性和方法的名称,并且通过调用前者获得一个值。还有一个是Bean的Methode和Interface的命名具有Design Pattern的特点(这个也是可以忽略的。)

bean 提出来的目的是组件化,跟其他程序语言比如 delphi 中提出的控件是一样的, 不过它给出了一些规范, 如果大家都遵守了, 就可以使用同一种机制来调用不同的控件。只是为了更方便重用性更强而已,也不是专门为 web service 而提出了。相比之下,GUI类的 bean 跟一般概念上的组件更相象。另外Bean的class比一般的class有许多规范与限制,所以它们的实现机制不一样。

换句话说,JavaBeans其实就是一般的JAVA代码片段,只不过是考虑了代码的重用而变成一些“组件化”了的java程序代码,且依据一定的模式制作。

JavaBean在本质上和一般的类的确没差别。但在思想和使用上有些不同。如:JavaBean通过setXXX(),getXXX()等方法提供操作Bean中数据的方法,这样在Web应用程序开发时,页面设计者可以不用再和java代码打交道直接通过html标签就可以完成相应数据的操作。这时Bean设计的目的,就在于将页面设计者和程序开发者隔离。至于重用性,我倒感觉和普通类差别不大。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号