instanceof关键字使用的方法(解决转型异常ClassCastException)
2024-10-16 06:32:15
一丶问题显现:
当你是父类的情况下,像使用子类的特定功能,就需要向下转型,但向下转型有可能会报错(ClassCastException)
而instanceof关键字就是解决异常的小能手,他能判断是否能转型
二丶解决方法:
为了避免ClassCastException的发生,Java提供了 instanceof
关键字,给引用变量做类型的校验,格式如下:
变量名 instanceof 数据类型
如果变量属于该数据类型,返回true。
如果变量不属于该数据类型,返回false。
所以,转换前,我们最好先做一个判断,代码如下:
public class Test {
public static void main(String[] args) {
// 向上转型
Animal a = new Cat();
a.eat(); // 调用的是 Cat 的 eat
// 向下转型 的判定
// a父类 判断 Cat子类
if (a instanceof Cat){
// 向下转型(强转)
Cat c = (Cat)a;
c.catchMouse();// 调用的是 Cat 的 catchMouse
} else if (a instanceof Dog){
Dog d = (Dog)a;
d.watchHouse(); // 调用的是 Dog 的 watchHouse
}
}
}
三丶总结:
在向下转型时使用
注意父类和子类的位置
判断完记得强转
最新文章
- css3 linear-gradient实现购物车地址选择信封效果
- linux系统swappiness参数在内存与交换分区间优化
- 关于jsp的内置对象request和response的重定向和转化(待补充)
- 重拾Blog
- 使用Apache Archiva搭建Maven Repository Server
- Android开发笔记
- Reading WebSites
- linux正则表达式使用
- JAVA中抽象类的一些总结
- token验证-微信公众平台开发3(asp.net)
- php关联不上mysql解决办法
- Effective Java:Ch4_Class:Item14_在public类中应该使用访问方法而不是public域
- WIn7下Ubuntu 14.04 安装
- 201521123090《Java程序设计》第1周学习总结
- node的第一步,hello,以及小技巧和CPU使用情况。到底能用几个核心?
- 【Unity】微软的一款依赖注入组件
- Docker学习笔记-两种发布方式
- 谢大神给的C++和C# DES加解密代码
- LINQ to Entities 比较日期
- ruby中字符串转换为类