当在程序中执行向下转型操作时,如果父类对象不是子类对象的实例,就会发生ClassCastException异常,所以在执行向下转型之前需要养成一个良好的习惯,就是判断父类对象是否为子类对象的实例。这个判断通常使用instanceof操作符来完成。
instanceof的语法格式如下:
myobject instanceof ExampleClass
myobject:某类的对象引用。
ExampleClass:某个类。
使用instanceof操作符的表达式返回值为布尔值。如果返回值为true,说明myobject对象为ExampleClass的实例对象;如果返回值为false,说明myobject对象不是ExampleClass的实例对象。
注意:instanceof是Java语言的关键字,在Java语言中关键字都是为小写。
示例:使用instanceof判断对象类型。
class Animal
{
}
class Dog extends Animal
{
}
/**
* 使用instanceof判断对象类型
*
* @author pan_junbiao
*
*/
public class InstanceofTest
{
public static void main(String[] args)
{
Animal a = new Dog();
if (a instanceof Dog)
{
// 向下转型操作
Dog d = (Dog) a;
System.out.println("向下转型操作成功!");
}
}
}
执行结果: