java中instansof什么作用
java中的instansof什么作用,请举个例子说明
08-10-29 &匿名提问
楼主写错了吧,应该是instanceof 吧, instanceof是Java的一个二元操作符,和==, &, &是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子: String s = &I AM an Object! &; boolean isObject = s instanceof O 我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True。 instanceof有一些用处。比如我们写了一个处理账单的系统,其中有这样三个类: public class Bill {//省略细节} public class PhoneBill extends Bill {//省略细节} public class GasBill extends Bill {//省略细节} 在处理程序里有一个方法,接受一个Bill类型的对象,计算金额。假设两种账单计算方法不同,而传入的Bill对象可能是两种中的任何一种,所以要用instanceof来判断: public double calculate(Bill bill) { if (bill instanceof PhoneBill) { //计算***账单 } if (bill instanceof GasBill) { //计算燃气账单 } ... } 这样就可以用一个方法处理两种子类。 然而,这种做法通常被认为是没有好好利用面向对象中的多态性。其实上面的功能要求用方法重载完全可以实现,这是面向对象变成应有的做法,避免回到结构化编程模式。只要提供两个名字和返回值都相同,接受参数类型不同的方法就可以了: public double calculate(PhoneBill bill) { //计算***账单 } public double calculate(GasBill bill) { //计算燃气账单 }另外,你在jdk文档中是找不到instanceof的说明的,就像你找不到&,&,=符号的说明一样,这是sun的不足之处吧。 二:
Class Teacher and Student are subclass of class Person.
p, t and s are all non-null.
if(t instanceof Person) {
s = (Student)t; } What is the result of this sentence? A. It will construct a Student object. B. The expression is legal. C. It is illegal at compilation. D. It is legal at compilation but possible illegal at runtime. (c)instanceof操作符的作用是判断一个变量是否是右操作数指出的类的一个对象,由于java语言的多态性使得可以用一个子类的实例赋值给一个父类的变量,而在一些情况下需要判断变量到底是一个什么类型的对象,这时就可以使用instanceof了。当左操作数是右操作数指出的类的实例或者是子类的实例时都返回真,如果是将一个子类的实例赋值给一个父类的变量,用instanceof判断该变量是否是子类的一个实例时也将返回真。此题中的if语句的判断没有问题,而且将返回真,但是后面的类型转换是非法的,因为t是一个Teacher对象,它不能被强制转换为一个Student对象,即使这两个类有共同的父类。如果是将t转换为一个Person对象则可以,而且不需要强制转换。这个错误在编译时就可以发现,因此编译不能通过。
请登录后再发表评论!
判断某一个实例是否是某一个class,这个只要记住就行了
请登录后再发表评论!
摘 要:在分析国内外CSCW研究和发展的基础上,通过比较C/S和B/S的优缺点,提出了基于集群服务器的硬件平台,利用智能体Agent代理,采用B/S模式,并将Applet嵌入到浏览器中的CSCW系统,实现基于集群服务器的网络CSCW系统。CSCW与CAD如何结合众所周知,传统的产品设计是在图纸上手工设计为主,设计周期长,质量不能保证,设计成本高,CAD技术的的出现和发展大大改变了这种情况,产品设计有了质的飞跃,随着CAD系统的广泛使用与计算机支持的协同工作(CSCW)领域研究的迅速进展,人们正在寻求将CAD技术与CSCW技术结合起来,以开发出计算机支持的协同设计系统(CSCD)。 计算机支持的协同设计(CSCD)是CSCW的概念和技术在制造业产品开发过程中的有效应用。在信息化和数字化时代里,面对激烈的市场竞争环境,一个企业如何以团队精神和信息技术缩短其产品的开发周期,提高产品质量,降低成本和加强销售服务是其自身生存和发展的关键之一。这已经超越了设计人员个人的能力和单机的CAD系统的功能。发展计算机支持的协同设计(CSCD)工具和系统已成为一种必然的需求。众所周知,传统的产品设计是在图纸上手工设计为主,设计周期长,质量不能保证,设计成本高,CAD技术的的出现和发展大大改变了这种情况,产品设计有了质的飞跃,随着CAD系统的广泛使用与计算机支持的协同工作(CSCW)领域研究的迅速进展,人们正在寻求将CAD技术与CSCW技术结合起来,以开发出计算机支持的协同设计系统(CSCD)。这对于大型设备的联合数字化设计、数字化装配等设计过程特别有效,对于计算机集成制造系统(CMIS)和平行工程协同工作系统(CECWS)的进一步发展具有重要作用,将是CMIS和CECWS的重要组成部分。
CIMS有计算机网络和数据库两个支持系统,它由管理信息系统(MIS)、工程设计系统(CAD/CAPP/CAM)、质量保证系统、制造自动化系统等部分组成。如果将工程设计系统扩展成为在Extranet/Intranet支持下与CSCW的概念相结合的协同设计系统,就将构成比工程设计系统功能更强的CSCD系统。当然,如果制造自动化系统不局限于机械类制造业,也可以是其他工程建设,如建筑、水利等,那么CSCD和CIMS的系统概念就更加扩大了,乃至现代城市建设规划中都用得上计算机支持的协同设计这一概念和技术,进行所谓“虚拟城市”或“未来城市”的协同规划设计。
CSCD具有分布式的信息集成、过程集成和组织集成的特征,它以“产品”(广义的概念)为核心,不同学科和不同技术领域的人员可以进行分布式协同设计。这种产品设计开发的新型模式,把以信息的采集、传输与交换、加工处理、信息管理等为核心的协同数据库作为“信息集成”的基础,把基于工作流系统(WFMS)的协调和控制作为“过程集成”的方法,它基于团队并强调人与人之间的交互,有多方参与协同设计,体现出“组织集成”。CSCD系统的体系结构 通过上面介绍,可以看出,一个CSCD系统远比一个单纯CAD系统复杂。首先,它应该是运行在网络环境下; 其次,各CAD系统是自治的、任务是分工的; 第三,各CAD系统之间围绕设计而进行交互和协同; 第四,设计过程或进程要有协调控制; 第五,对设计数据、版本和结果要进行协同控制。因此,要考虑对各子系统的数据库进行协同控制与管理,即建立一种“数据库的协同管理系统”或简称“协同数据库”。这样,可以建立如图11所示的体系结构。根据这种体系结构结合实际任务与需求组建CSCD系统。一般地讲,组建的CSCD系统应具备下列集成的技术特性:
1.高速宽带网络,保证三维的、多媒体信息数据的正确可靠传输;
2.三维高性能CAD 工作站,能进行异地数字化设计和数字化装配;
3.提供进行实时交互的计算机多媒体会议系统,具有音频、视频、白板、共享应用功能;
4.以具有智能和动态特性的工作流管理系统来实现设计过程或进程的协调控制和管理;
5.建立一种“数据库的协同管理系统”对分布式异构数据库、设计数据、版本和结果进行协同控制和管理。
CSCD的协同工作模式
在CSCD系统中,分布在不同地点承担不同子任务的设计者之间的交互、通信和协商要贯穿在整个设计过程中,产品的需求分析、子任务的分配和设计执行过程、工程设计的完成等各个阶段都需在并行工程环境协同技术的支持下实现不同级别的通信和协商。一般地,我们可以根据各子任务和子系统在各个不同设计阶段相互关系耦合的紧密程度,把协同分成三种: 松散耦合、中度耦合及紧密耦合等三类。
1.松散耦合协同设计模式
各子任务之间的耦合比较松散,如果用“通信阻抗”这一概念来描述它们之间的通信耦合松紧程度的话,那么,在这种情况下,比较高的“通信阻抗”是可以接受的。所谓“通信阻抗”是指网络延迟、协议差别、格式变换等造成的通信困难程度。因为,各子任务之间的信息交换往往是只在问题求解的开始和结束阶段进行数据流的输入输出,重覆一次的通信周期又比较长,通信带宽比较低。松散耦合协同设计的一种最基本的方式,往往只要求设计者从一个软件程序中获取数据信息,然后作为另一个软件程序的输入,相互之间的交互较少或没有,最高级的方式只不过是要求这个过程是自动进行的。松散耦合协同设计模式是走向并行工程的最初一步。从技术上讲它可以直接从现有的分布式工程环境中获得,它可用于那些不需要进行大量的通信但相互相关的工程设计任务中。
2.中度耦合协同设计模式
各子任务之间有中等程度的耦合,“通信阻抗”不能太大。因为,在解决问题过程中各子任务之间要进行信息交换,而不只是在开始或结束的时候进行,通信耦合相对来说比较紧密。计算机支持工具要用来自动地管理各方之间的信息转换和传输: 如交互大多数是隐藏在接口程序里,网络的位置对用户是不大可见的,虽然接口工具必须感知它的存在; 在各方进行通信时,肯定会有许多变换,但都隐藏在计算机工具里等。然而仍然还存在着冗余和数据一致性问题,以及用户在某种程度上感知到网络的延迟。在中度耦合协同设计系统中可用一个共享数据库作为各子任务间的通信媒体,但需要解决好数据库访问的冲突问题。
3.紧密耦合协同设计模式
在这种模式中,一个设计任务往往是按层次结构划分成许多相互间关系密切的子任务,它们在并行工程的环境中执行。层与层之间通过接口或代理(Agents)进行交互,各子任务之间不仅有频繁的信息交换,而且结果也相互有影响,因此这是一种耦合很紧密的协同设计,要求其“通信阻抗”很小,特别是对那些进行实时协同设计的系统来说更是如此。
协同设计中的对象描述模型
前面论述了了协同设计中执行设计的各子任务之间的交互或通信问题。而在协同设计中另一个需要解决的问题则是关于设计对象的描述。因为参加协同设计的设计者会来自不同的学科、技术部门、承担不同的任务和担当不同的角色。因此。对于同一产品的描述,会从不同的角度和观念及其作用去考虑。这如同在房屋建筑设计中,对于墙、地板、门、窗这些基本构件,建筑设计师、结构工程师、制造与施工者会有不同的观念,会从不同的各个角度去描述和进行设计。这样,同一对象,就有多个不同的描述模型(组成、参数、功能、性能等)。单一描述模型在协同设计中就不是很方便了。例如,我们不能简单地只用“尺寸大小”或“一张蓝图”来描述一个“窗户”的设计,建筑设计师要从窗户的形状、美观、采光量等角度来进行设计,而结构工程师则会从结构强度、几何尺寸等方面加以设计,而制造与施工者也许会从材料、加工难易程度、完成时间等方面来考虑。他们既有自己的设计方案,也会向对方提出建议,或根据对方的意见来修改自己的设计,即相应的对象描述,这也是协同设计中的一种协调。
但在协同设计中,往往也可以通过以某种基于基本模型表示的方法来获得各种不同描述模型。这种基本模型表示了任何一个设计对象的功能特性和结构特性,它可以包括目的(purpose)、功能(function)、性能(behavior)和结构(structure)等。各种对象描述模型就可以根据其相应学科观念选择或强调相应的方面或参数,用此基本模型把设计对象表示出来。
基于互联网的协同设计
基于互联网开展分布式异构平台下的协同设计对于企业或企业集团来讲都具有很强的吸引力。这样的协同设计环境具有下列特性:
● 在Extranet/Intranet乃至Internet环境,可以形成动态的随“产品”而转移的“虚拟设计组织”,支持同步或异步协同设计;
● 基于互联网和C/S结构;
● 支持HTTP超文本和3D技术;
● 具有协同工作描述语言或CORBA技术以提供在异构分布环境下的各对象系统之间的无缝连接和互操作;
● 至少应具有数据库协同管理功能,以解决设计过程中“产品”数据的一致性、安全性、版本管理等问题。
请登录后再发表评论!
希望对你有所帮助
请登录后再发表评论!的海词问答和网友补充:
相关词典网站: