您的位置:首页 > 编程语言 > Java开发

java强制类型转换

2015-10-28 20:24 344 查看

【0】README

0.1)本文转自 core java volume 1 ,在强制类型转换部分,它提到了 使用 instanceof 以保证 类型成功转换(而不是抛出异常),很有看点;

【1】强制类型转换的相关知识点:

1.1)进行类型转换的唯一原因是:在暂时忽视对象的实际类型后,使用对象的全部功能;

1.2)将一个子类的引用赋给一个超类变量,编译器是允许的,但将一个超类的引用赋给一个子类变量,必须进行类型转换;

1.3)我们看个荔枝: 如果试图在继承链上进行向下的类型转换,会发生什么情况?

Manager boss = (Manager)staff[1]; 运行这个程序时, java 运行时系统将报告这个错误, 产生一个 ClassCastException异常。

所以,我们应该养成一个良好的程序设计习惯:在进行类型转换之前, 先查看一下是否能够成功地转换, 这个过程使用 instanceof 就可以实现, 如:

if(staff[1] intanceof Manager)
{
boss = (Manager)staff[1];
}


最后, 如果这个类型转换不可能成功,编译器就不进行转换;

Conclusion)

C1)只能在继承层次内进行类型转换;

C2)在将超类转换成子类之前, 应该使用 instanceof 进行检查;

C3)实际上, 通过类型转换调整对象的类型并不是一种好的做法,这是因为 实现多态性的动态绑定机制能够自动地找到相应的方法;

C4)只要没有捕获到 ClassCastException 异常, 程序就会终止, 在一般情况下, 应该尽量少用类型转换 和 instanceof 运算符;

Annotation)如果x为null,将进行下列测试:

x instanceof C


这不会产生 异常, 只是返回 false, 之所以这样处理是因为null 没有引用任何对象,当然也不会应用C类型的对象;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 强制类型转换