77.instanceof运算符
程序员文章站
2022-03-02 11:28:42
...
Java语言的多态性机制导致了引用变量的声明类型和其实际引用对象的类型可能不一致,再结合虚方法调用规则可以得出下述结论:声明为同种类型的两个引用变量调用同一个方法时也可能会有不同的行为(前面的虚方法调用)。
为更准确地鉴别一个对象的真正类型,Java语言引入了instanceof操作符,其使用格式为:
<引用类型变量> instanceof <引用类型>
这是一个boolean类型的表达式,当instanceof左侧的引用类型变量所引用对象的实际类型是其右侧给出的类型或其子类类型时,整个表达式的结果为true,否则为false。
我们来看一个例子,请看下面这些类的关系:类Student和Teacher派生自Person:
public class Person{
… …
}
public class Student extends Person{
… …
}
public class Teacher extends Person{
… …
}
现在有一个方法,接收一个Person类型参数,然后再在运行时根据传入的参数类型来做不同的操作,此时,就可以用instanceof来对输入的参数作判断:
public void methodA(Person p){
if(p instanceof Teacher)
{//statement 1}
if(p instanceof Student)
{//statement 2}
}