中国领先的工业平台

返回贤集网 返回微头条
贤集网技术微头条APP获取

Java instanceof 运算符

 山东大明消毒科技有限公司

下载贤集网APP入驻自媒体

多态性带来了一个问题,就是如何判断一个变量所实际引用的对象的类型 。 C++使用runtime-type information(RTTI),Java 使用 instanceof 操作符。


instanceof 运算符用来判断一个变量所引用的对象的实际类型,注意是它引用的对象的类型,不是变量的类型。请看下面的代码:

public final class Demo{

   public static void main(String[] args) {

       // 引用 People 类的实例

       People obj = new People();

       if(obj instanceof Object){

           System.out.println("我是一个对象");

       }

       if(obj instanceof People){

           System.out.println("我是人类");

       }

       if(obj instanceof Teacher){

           System.out.println("我是一名教师");

       }

       if(obj instanceof President){

           System.out.println("我是校长");

       }


       System.out.println("-----------");  // 分界线

     

       // 引用 Teacher 类的实例

       obj = new Teacher();

       if(obj instanceof Object){

           System.out.println("我是一个对象");

       }

       if(obj instanceof People){

           System.out.println("我是人类");

       }

       if(obj instanceof Teacher){

           System.out.println("我是一名教师");

       }

       if(obj instanceof President){

           System.out.println("我是校长");

       }

   }

}


class People{ }

class Teacher extends People{ }

class President extends Teacher{ }

运行结果:

我是一个对象

我是人类

-----------

我是一个对象

我是人类

我是一名教师


可以看出,如果变量引用的是当前类或它的子类的实例,instanceof 返回 true,否则返回 false。

最新回复

还没有人回复哦,抢沙发吧~

发布回复

为您推荐

热门交流