易截截图软件、单文件、免安装、纯绿色、仅160KB

java的强制类型转换

强制类型转换,又叫造型。分为基本数据类型和引用数据类型两种情况,这里探讨后者,即引用类型的强制类型转换。
对于引用类型来说,什么是强制类型转换呢?简单地说,就是把父类型转换为子类型。因为子类型比父类型的内涵要丰富,无非就是属性更多功能更强,所以要把父类型转换为子类型,需要强制,所以叫强制类型转换。那么,是不是只要是父类型的变量就可以转换为子类型呢?事实上不是,这里是有条件限制的。
首先来看发生在什么情况下。我们用一个类型的构造方法构造出一个对象的时候,对象的类型已经确定了,就是这个类型,但是java允许我们可以不用这个类型的变量引用它,而使用它的父类类型,这时候情况就是我们用一个功能较弱的类型引用了一个功能较强的对象。然而有时候我们又希望这个对象完全发挥它的作用,就需要用一个它本身的类型的变量来引用它,因为原来那个父类的变量是不具备这些功能的,不能使用variablename.function()来使其发挥作用,所以还是用它自己的吧。问题是对象已经在内存中了,已经构造完了,你即使声明一个它本身类型的变量怎么指向它呢?答案是借助原来那个变量,就是它父类型的那个变量,让新的变量和原来的那个指向同一个对象。方式就是两者之间划等号。可是引用类型变量的相等需要两者类型相同,问题是不相同,怎么办?那就是把父类型的变量强制转换成子类型。
举个例子来说,比如原来定义了两个类型,FatherClass和SonClass,然后构造了一个SonClass类型的对象,用一个FatherClass类型的变量father引用了,就像这样:
FatherClass father = new SonClass();
那么,需要将这个对象的类型还原的时候,就可以用这个表达式。
SonClass son = (SonClass)father;
其实,father仍然是FatherClass类型,只不过临时把它的能力提升了一下,然后这一切都交给了son这个变量。但是经过这样处理以后,这个对象就真正提升了能力了,在son这个变量的引用之下,从此以后恢复真身,可以自由发挥了。
我们刚才说从父类到子类的强制类型转换并不总是能够成功,那什么时候不能成功呢?
在于这个的对象的真实类型,也就是它是使用什么类的构造方法构造出来的。如果它本身就是父类的类型,那么强制类型转换是不会成功的。
还是举个例子:
FatherClass f = new FatherClass();
SonClass s = (SonClass)f; //这时候就会报错,运行时报错,编译能通过的
编译器只检查类型之间有无继承关系,有则通过;运行时检查真正类型,是则通


相关文档:

java 执行批处理文件.bat 数据库自动备份

1.提前写好备份.bat,放在某个文件夹里,将路径设置在.properties里的
 @echo off
set txt=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
echo %txt%
echo --------------------------------------------------
echo -------------正在执行oracle数据库备份--------------
echo ----- ......

delphi + java 的分布式应用思考

delphi  + java 的分布式应用思考
用delphi做界面层  java业务逻辑层 这样看上去很美吧?
具体的实现
java 做业务逻辑层 应该有多种选择 企业级的有EJB3, 轻量级的有spring
目前在学习ejb3,感觉用来做业务逻辑层真的很不错。spring还没有了解
界面层用delphi,RAD应该是delphi的优势。
关键的问题的如果把 ......

delphi + java 的分布式应用

结合Delphi
客户端桌面开发的优势和Java的稳健强壮特性,采用Delphi
Client + Java Server的系统架构应该是很有市场的,经过一段时间的实际项目实践,实现架构是这么实现的,供讨论:
1.后台应用服务层可采用基于Spring+Hibernate的轻量级J2EE实现,并使用Apache XML-RPC
提供客户端调用接口;
2.前台采用 Delphi
......

java xml

First
Parsing an XML Document
To read an XML document, you need a DocumentBuilder object, which you get from a DocumentBuilderFactory, like this:DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
You can now read a docu ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号