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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统