JAVA中instanceof的作用和用法

 

instanceof 运算符作用

  • 用来在运行时指出对象是否是特定类的一个实例。
  • instance of通过返回一个布尔值来指出,这个对象是否是这个特定类或它的子类的一个实例。

    用法

    boolean result = object instanceof class 
    参数

  • result:布尔类型。
  • object:任意对象表达式。
  • class:任意已定义的对象类。
  • 说明: 
    如果 object 是 class 的一个实例,则返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

    测试例子如下

    /*
     * *************************************************************************
     *  Copyright (c) 2019XXXX公司. All Rights Reserved.
     *
     *   名称:old-service
     *   版权说明:本软件属于******有限公司所有,在未获得XXXX有限公司正式授权
     *             情况下,任何企业和个人,不能获取、阅读、安装、传播本软件涉及的任何受知
     *             识产权保护的内容。
     *  **************************************************************************
     */
    
    package com.********.advice;
    
    /**
     * @ClassName instanceoftest
     * @Description instanceof 运算符作用
     * @Author 佚名
     * @Date 2019/9/11 16:10
     **/
    interface A {
    }
    
    class B implements A {
    
    }
    
    class C extends B {
    
    }
    
    public class instanceoftest {
    
        public static void main(String[] args) {
            A a = null;
            B b = null;
            boolean res;
            System.out.println("instanceoftest test case 1: ------------------");
            res = a instanceof A;
            System.out.println("a instanceof A: " + res);
            res = b instanceof B;
            System.out.println("b instanceof B: " + res);
            System.out.println("/ninstanceoftest test case 2: ------------------");
            a = new B();
            b = new B();
            res = a instanceof A;
            System.out.println("a instanceof A: " + res);
    
            res = a instanceof B;
            System.out.println("a instanceof B: " + res);
    
            res = b instanceof A;
            System.out.println("b instanceof A: " + res);
            res = b instanceof B;
            System.out.println("b instanceof B: " + res);
    
            System.out.println("/ninstanceoftest test case 3: ------------------");
            B b2 = (C) new C();
    
            res = b2 instanceof A;
            System.out.println("b2 instanceof A: " + res);
    
            res = b2 instanceof B;
            System.out.println("b2 instanceof B: " + res);
    
            res = b2 instanceof C;
            System.out.println("b2 instanceof C: " + res);
        }
    }
    
    "C:\Program Files\Java\jdk1.8.0_201\bin\java.exe" "-javaagent:D:\Intellji IDEA\IntelliJ IDEA 2019.1\lib\idea_rt.jar=54339:D:\Intellji IDEA\IntelliJ IDEA 2019.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_201\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\rt.jar;F:\work-project\jsetc\old-service\jstxb-issued-api\target\classes;F:\work-project\jsetc\old-service\jstxb-issued-dao\target\classes;F:\repository\com\alibaba\druid\1.1.12\druid-1.1.12.jar;F:\repository\com\baomidou\mybatis-plus-boot-starter\3.1.1\mybatis-plus-boot-starter-3.1.1.jar;F:\repository\com\baomidou\mybatis-plus\3.1.1\mybatis-plus-3.1.1.jar;F:\repository\com\baomidou\mybatis-plus-extension\3.1.1\mybatis-plus-extension-3.1.1.jar;F:\repository\com\baomidou\mybatis-plus-core\3.1.1\mybatis-plus-core-3.1.1.jar;F:\repository\com\baomidou\mybatis-plus-annotation\3.1.1\mybatis-plus-annotation-3.1.1.jar;F:\repository\com\github\jsqlparser\jsqlparser\1.2\jsqlparser-1.2.jar;F:\repository\org\mybatis\mybatis\3.5.1\mybatis-3.5.1.jar;F:\repository\org\mybatis\mybatis-spring\2.0.1\mybatis-spring-2.0.1.jar;F:\repository\org\springframework\boot\spring-boot-autoconfigure\2.1.1.RELEASE\spring-boot-autoconfigure-2.1.1.RELEASE.jar;F:\work-project\jsetc\old-service\jstxb-issued-biz\target\classes;F:\repository\org\springframework\cloud\spring-cloud-starter-openfeign\2.1.1.RELEASE\spring-cloud-starter-openfeign-2.1.1.RELEASE.jar;F:\repository\org\springframework\cloud\spring-cloud-openfeign-core\2.1.1.RELEASE\spring-cloud-openfeign-core-2.1.1.RELEASE.jar;F:\repository\io\github\openfeign\form\feign-form-spring\3.5.0\feign-form-spring-3.5.0.jar;F:\repository\io\github\openfeign\form\feign-form\3.5.0\feign-form-3.5.0.jar;F:\repository\org\springframework\cloud\spring-cloud-commons\2.1.1.RELEASE\spring-cloud-commons-2.1.1.RELEASE.jar;F:\repository\org\springframework\security\spring-security-crypto\5.1.2.RELEASE\spring-security-crypto-5.1.2.RELEASE.jar;F:\repository\io\github\openfeign\feign-core\10.1.0\feign-core-10.1.0.jar;F:\repository\io\github\openfeign\feign-slf4j\10.1.0\feign-slf4j-10.1.0.jar;F:\repository\io\github\openfeign\feign-hystrix\10.1.0\feign-hystrix-10.1.0.jar;F:\work-project\jsetc\old-service\jstxb-issued-common\target\classes;F:\repository\org\bouncycastle\bcprov-jdk15on\1.56\bcprov-jdk15on-1.56.jar;F:\repository\org\apache\httpcomponents\httpmime\4.5.6\httpmime-4.5.6.jar;F:\repository\org\apache\httpcomponents\httpclient\4.5.6\httpclient-4.5.6.jar;F:\repository\org\apache\httpcomponents\httpcore\4.4.10\httpcore-4.4.10.jar;F:\repository\commons-fileupload\commons-fileupload\1.3.2\commons-fileupload-1.3.2.jar;F:\repository\commons-io\commons-io\2.2\commons-io-2.2.jar;F:\repository\org\springframework\boot\spring-boot-starter\2.1.1.RELEASE\spring-boot-starter-2.1.1.RELEASE.jar;F:\repository\org\springframework\boot\spring-boot\2.1.1.RELEASE\spring-boot-2.1.1.RELEASE.jar;F:\repository\org\springframework\boot\spring-boot-starter-logging\2.1.1.RELEASE\spring-boot-starter-logging-2.1.1.RELEASE.jar;F:\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;F:\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;F:\repository\org\apache\logging\log4j\log4j-to-slf4j\2.11.1\log4j-to-slf4j-2.11.1.jar;F:\repository\org\apache\logging\log4j\log4j-api\2.11.1\log4j-api-2.11.1.jar;F:\repository\org\slf4j\jul-to-slf4j\1.7.25\jul-to-slf4j-1.7.25.jar;F:\repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;F:\repository\org\yaml\snakeyaml\1.23\snakeyaml-1.23.jar;F:\repository\org\apache\commons\commons-lang3\3.8.1\commons-lang3-3.8.1.jar;F:\repository\commons-codec\commons-codec\1.11\commons-codec-1.11.jar;F:\repository\org\freemarker\freemarker\2.3.28\freemarker-2.3.28.jar;F:\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.13\tomcat-embed-core-9.0.13.jar;F:\repository\org\apache\tomcat\tomcat-annotations-api\9.0.13\tomcat-annotations-api-9.0.13.jar;F:\repository\net\sf\dozer\dozer\5.5.1\dozer-5.5.1.jar;F:\repository\commons-beanutils\commons-beanutils\1.9.1\commons-beanutils-1.9.1.jar;F:\repository\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;F:\repository\org\slf4j\jcl-over-slf4j\1.7.25\jcl-over-slf4j-1.7.25.jar;F:\repository\org\springframework\boot\spring-boot-starter-aop\2.1.1.RELEASE\spring-boot-starter-aop-2.1.1.RELEASE.jar;F:\repository\org\springframework\spring-aop\5.1.3.RELEASE\spring-aop-5.1.3.RELEASE.jar;F:\repository\org\springframework\spring-beans\5.1.3.RELEASE\spring-beans-5.1.3.RELEASE.jar;F:\repository\org\aspectj\aspectjweaver\1.9.2\aspectjweaver-1.9.2.jar;F:\repository\org\springframework\boot\spring-boot-starter-data-jpa\2.1.1.RELEASE\spring-boot-starter-data-jpa-2.1.1.RELEASE.jar;F:\repository\javax\transaction\javax.transaction-api\1.3\javax.transaction-api-1.3.jar;F:\repository\javax\xml\bind\jaxb-api\2.3.1\jaxb-api-2.3.1.jar;F:\repository\javax\activation\javax.activation-api\1.2.0\javax.activation-api-1.2.0.jar;F:\repository\org\hibernate\hibernate-core\5.3.7.Final\hibernate-core-5.3.7.Final.jar;F:\repository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;F:\repository\javax\persistence\javax.persistence-api\2.2\javax.persistence-api-2.2.jar;F:\repository\org\javassist\javassist\3.23.1-GA\javassist-3.23.1-GA.jar;F:\repository\net\bytebuddy\byte-buddy\1.9.5\byte-buddy-1.9.5.jar;F:\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;F:\repository\org\jboss\jandex\2.0.5.Final\jandex-2.0.5.Final.jar;F:\repository\org\dom4j\dom4j\2.1.1\dom4j-2.1.1.jar;F:\repository\org\hibernate\common\hibernate-commons-annotations\5.0.4.Final\hibernate-commons-annotations-5.0.4.Final.jar;F:\repository\org\springframework\data\spring-data-jpa\2.1.3.RELEASE\spring-data-jpa-2.1.3.RELEASE.jar;F:\repository\org\springframework\data\spring-data-commons\2.1.3.RELEASE\spring-data-commons-2.1.3.RELEASE.jar;F:\repository\org\springframework\spring-orm\5.1.3.RELEASE\spring-orm-5.1.3.RELEASE.jar;F:\repository\org\springframework\spring-context\5.1.3.RELEASE\spring-context-5.1.3.RELEASE.jar;F:\repository\org\springframework\spring-tx\5.1.3.RELEASE\spring-tx-5.1.3.RELEASE.jar;F:\repository\org\springframework\spring-aspects\5.1.3.RELEASE\spring-aspects-5.1.3.RELEASE.jar;F:\repository\org\springframework\boot\spring-boot-starter-jdbc\2.1.1.RELEASE\spring-boot-starter-jdbc-2.1.1.RELEASE.jar;F:\repository\com\zaxxer\HikariCP\3.2.0\HikariCP-3.2.0.jar;F:\repository\org\springframework\spring-jdbc\5.1.3.RELEASE\spring-jdbc-5.1.3.RELEASE.jar;F:\repository\org\springframework\boot\spring-boot-starter-web\2.1.1.RELEASE\spring-boot-starter-web-2.1.1.RELEASE.jar;F:\repository\org\springframework\boot\spring-boot-starter-json\2.1.1.RELEASE\spring-boot-starter-json-2.1.1.RELEASE.jar;F:\repository\com\fasterxml\jackson\core\jackson-databind\2.9.7\jackson-databind-2.9.7.jar;F:\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.7\jackson-datatype-jdk8-2.9.7.jar;F:\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.7\jackson-datatype-jsr310-2.9.7.jar;F:\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.7\jackson-module-parameter-names-2.9.7.jar;F:\repository\org\springframework\boot\spring-boot-starter-tomcat\2.1.1.RELEASE\spring-boot-starter-tomcat-2.1.1.RELEASE.jar;F:\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.13\tomcat-embed-websocket-9.0.13.jar;F:\repository\org\hibernate\validator\hibernate-validator\6.0.13.Final\hibernate-validator-6.0.13.Final.jar;F:\repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;F:\repository\org\springframework\spring-web\5.1.3.RELEASE\spring-web-5.1.3.RELEASE.jar;F:\repository\org\springframework\spring-webmvc\5.1.3.RELEASE\spring-webmvc-5.1.3.RELEASE.jar;F:\repository\org\springframework\spring-expression\5.1.3.RELEASE\spring-expression-5.1.3.RELEASE.jar;F:\repository\org\springframework\spring-core\5.1.3.RELEASE\spring-core-5.1.3.RELEASE.jar;F:\repository\org\springframework\spring-jcl\5.1.3.RELEASE\spring-jcl-5.1.3.RELEASE.jar;F:\repository\com\oracle\ojdbc8\12.2.0.1\ojdbc8-12.2.0.1.jar;F:\repository\io\springfox\springfox-swagger-ui\2.6.1\springfox-swagger-ui-2.6.1.jar;F:\repository\io\springfox\springfox-spring-web\2.6.1\springfox-spring-web-2.6.1.jar;F:\repository\org\projectlombok\lombok\1.18.4\lombok-1.18.4.jar;F:\repository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;F:\repository\com\alibaba\fastjson\1.2.23\fastjson-1.2.23.jar;F:\repository\org\springframework\boot\spring-boot-starter-validation\2.1.1.RELEASE\spring-boot-starter-validation-2.1.1.RELEASE.jar;F:\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.13\tomcat-embed-el-9.0.13.jar;F:\repository\io\springfox\springfox-swagger2\2.6.1\springfox-swagger2-2.6.1.jar;F:\repository\io\swagger\swagger-annotations\1.5.10\swagger-annotations-1.5.10.jar;F:\repository\io\swagger\swagger-models\1.5.10\swagger-models-1.5.10.jar;F:\repository\io\springfox\springfox-spi\2.6.1\springfox-spi-2.6.1.jar;F:\repository\io\springfox\springfox-core\2.6.1\springfox-core-2.6.1.jar;F:\repository\io\springfox\springfox-schema\2.6.1\springfox-schema-2.6.1.jar;F:\repository\io\springfox\springfox-swagger-common\2.6.1\springfox-swagger-common-2.6.1.jar;F:\repository\com\google\guava\guava\18.0\guava-18.0.jar;F:\repository\com\fasterxml\classmate\1.4.0\classmate-1.4.0.jar;F:\repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;F:\repository\org\springframework\plugin\spring-plugin-core\1.2.0.RELEASE\spring-plugin-core-1.2.0.RELEASE.jar;F:\repository\org\springframework\plugin\spring-plugin-metadata\1.2.0.RELEASE\spring-plugin-metadata-1.2.0.RELEASE.jar;F:\repository\org\mapstruct\mapstruct\1.0.0.Final\mapstruct-1.0.0.Final.jar;F:\repository\org\springframework\boot\spring-boot-starter-data-redis\2.1.1.RELEASE\spring-boot-starter-data-redis-2.1.1.RELEASE.jar;F:\repository\org\springframework\data\spring-data-redis\2.1.3.RELEASE\spring-data-redis-2.1.3.RELEASE.jar;F:\repository\org\springframework\data\spring-data-keyvalue\2.1.3.RELEASE\spring-data-keyvalue-2.1.3.RELEASE.jar;F:\repository\org\springframework\spring-oxm\5.1.3.RELEASE\spring-oxm-5.1.3.RELEASE.jar;F:\repository\org\springframework\spring-context-support\5.1.3.RELEASE\spring-context-support-5.1.3.RELEASE.jar;F:\repository\io\lettuce\lettuce-core\5.1.3.RELEASE\lettuce-core-5.1.3.RELEASE.jar;F:\repository\io\projectreactor\reactor-core\3.2.3.RELEASE\reactor-core-3.2.3.RELEASE.jar;F:\repository\io\netty\netty-common\4.1.31.Final\netty-common-4.1.31.Final.jar;F:\repository\io\netty\netty-transport\4.1.31.Final\netty-transport-4.1.31.Final.jar;F:\repository\io\netty\netty-buffer\4.1.31.Final\netty-buffer-4.1.31.Final.jar;F:\repository\io\netty\netty-resolver\4.1.31.Final\netty-resolver-4.1.31.Final.jar;F:\repository\io\netty\netty-handler\4.1.31.Final\netty-handler-4.1.31.Final.jar;F:\repository\io\netty\netty-codec\4.1.31.Final\netty-codec-4.1.31.Final.jar;F:\repository\org\springframework\cloud\spring-cloud-starter-netflix-eureka-client\2.1.1.RELEASE\spring-cloud-starter-netflix-eureka-client-2.1.1.RELEASE.jar;F:\repository\org\springframework\cloud\spring-cloud-starter\2.1.1.RELEASE\spring-cloud-starter-2.1.1.RELEASE.jar;F:\repository\org\springframework\cloud\spring-cloud-context\2.1.1.RELEASE\spring-cloud-context-2.1.1.RELEASE.jar;F:\repository\org\springframework\security\spring-security-rsa\1.0.7.RELEASE\spring-security-rsa-1.0.7.RELEASE.jar;F:\repository\org\bouncycastle\bcpkix-jdk15on\1.60\bcpkix-jdk15on-1.60.jar;F:\repository\org\springframework\cloud\spring-cloud-netflix-hystrix\2.1.1.RELEASE\spring-cloud-netflix-hystrix-2.1.1.RELEASE.jar;F:\repository\org\springframework\cloud\spring-cloud-netflix-eureka-client\2.1.1.RELEASE\spring-cloud-netflix-eureka-client-2.1.1.RELEASE.jar;F:\repository\com\netflix\eureka\eureka-client\1.9.8\eureka-client-1.9.8.jar;F:\repository\org\codehaus\jettison\jettison\1.3.7\jettison-1.3.7.jar;F:\repository\stax\stax-api\1.0.1\stax-api-1.0.1.jar;F:\repository\com\netflix\netflix-commons\netflix-eventbus\0.3.0\netflix-eventbus-0.3.0.jar;F:\repository\com\netflix\netflix-commons\netflix-infix\0.3.0\netflix-infix-0.3.0.jar;F:\repository\commons-jxpath\commons-jxpath\1.3\commons-jxpath-1.3.jar;F:\repository\joda-time\joda-time\2.10.1\joda-time-2.10.1.jar;F:\repository\org\antlr\antlr-runtime\3.4\antlr-runtime-3.4.jar;F:\repository\org\antlr\stringtemplate\3.2.1\stringtemplate-3.2.1.jar;F:\repository\com\google\code\gson\gson\2.8.5\gson-2.8.5.jar;F:\repository\org\apache\commons\commons-math\2.2\commons-math-2.2.jar;F:\repository\com\netflix\archaius\archaius-core\0.7.6\archaius-core-0.7.6.jar;F:\repository\javax\ws\rs\jsr311-api\1.1.1\jsr311-api-1.1.1.jar;F:\repository\com\netflix\servo\servo-core\0.12.21\servo-core-0.12.21.jar;F:\repository\com\sun\jersey\jersey-core\1.19.1\jersey-core-1.19.1.jar;F:\repository\com\sun\jersey\jersey-client\1.19.1\jersey-client-1.19.1.jar;F:\repository\com\sun\jersey\contribs\jersey-apache-client4\1.19.1\jersey-apache-client4-1.19.1.jar;F:\repository\com\google\inject\guice\4.1.0\guice-4.1.0.jar;F:\repository\javax\inject\javax.inject\1\javax.inject-1.jar;F:\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;F:\repository\com\github\vlsi\compactmap\compactmap\1.2.1\compactmap-1.2.1.jar;F:\repository\com\github\andrewoma\dexx\dexx-collections\0.2\dexx-collections-0.2.jar;F:\repository\com\fasterxml\jackson\core\jackson-core\2.9.7\jackson-core-2.9.7.jar;F:\repository\com\netflix\eureka\eureka-core\1.9.8\eureka-core-1.9.8.jar;F:\repository\org\codehaus\woodstox\woodstox-core-asl\4.4.1\woodstox-core-asl-4.4.1.jar;F:\repository\javax\xml\stream\stax-api\1.0-2\stax-api-1.0-2.jar;F:\repository\org\codehaus\woodstox\stax2-api\3.1.4\stax2-api-3.1.4.jar;F:\repository\org\springframework\cloud\spring-cloud-starter-netflix-archaius\2.1.1.RELEASE\spring-cloud-starter-netflix-archaius-2.1.1.RELEASE.jar;F:\repository\org\springframework\cloud\spring-cloud-netflix-archaius\2.1.1.RELEASE\spring-cloud-netflix-archaius-2.1.1.RELEASE.jar;F:\repository\commons-configuration\commons-configuration\1.8\commons-configuration-1.8.jar;F:\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;F:\repository\org\springframework\cloud\spring-cloud-starter-netflix-ribbon\2.1.1.RELEASE\spring-cloud-starter-netflix-ribbon-2.1.1.RELEASE.jar;F:\repository\com\netflix\ribbon\ribbon\2.3.0\ribbon-2.3.0.jar;F:\repository\com\netflix\ribbon\ribbon-transport\2.3.0\ribbon-transport-2.3.0.jar;F:\repository\io\reactivex\rxnetty-contexts\0.4.9\rxnetty-contexts-0.4.9.jar;F:\repository\io\reactivex\rxnetty-servo\0.4.9\rxnetty-servo-0.4.9.jar;F:\repository\io\reactivex\rxnetty\0.4.9\rxnetty-0.4.9.jar;F:\repository\com\netflix\ribbon\ribbon-core\2.3.0\ribbon-core-2.3.0.jar;F:\repository\com\netflix\ribbon\ribbon-httpclient\2.3.0\ribbon-httpclient-2.3.0.jar;F:\repository\com\netflix\netflix-commons\netflix-commons-util\0.3.0\netflix-commons-util-0.3.0.jar;F:\repository\com\netflix\ribbon\ribbon-loadbalancer\2.3.0\ribbon-loadbalancer-2.3.0.jar;F:\repository\com\netflix\netflix-commons\netflix-statistics\0.1.1\netflix-statistics-0.1.1.jar;F:\repository\io\reactivex\rxjava\1.3.8\rxjava-1.3.8.jar;F:\repository\com\netflix\ribbon\ribbon-eureka\2.3.0\ribbon-eureka-2.3.0.jar;F:\repository\com\thoughtworks\xstream\xstream\1.4.10\xstream-1.4.10.jar;F:\repository\xmlpull\xmlpull\1.1.3.1\xmlpull-1.1.3.1.jar;F:\repository\xpp3\xpp3_min\1.1.4c\xpp3_min-1.1.4c.jar;F:\repository\org\springframework\cloud\spring-cloud-starter-netflix-hystrix\2.1.1.RELEASE\spring-cloud-starter-netflix-hystrix-2.1.1.RELEASE.jar;F:\repository\org\springframework\cloud\spring-cloud-netflix-ribbon\2.1.1.RELEASE\spring-cloud-netflix-ribbon-2.1.1.RELEASE.jar;F:\repository\com\netflix\hystrix\hystrix-core\1.5.18\hystrix-core-1.5.18.jar;F:\repository\org\hdrhistogram\HdrHistogram\2.1.9\HdrHistogram-2.1.9.jar;F:\repository\com\netflix\hystrix\hystrix-serialization\1.5.18\hystrix-serialization-1.5.18.jar;F:\repository\com\fasterxml\jackson\module\jackson-module-afterburner\2.9.7\jackson-module-afterburner-2.9.7.jar;F:\repository\com\netflix\hystrix\hystrix-metrics-event-stream\1.5.18\hystrix-metrics-event-stream-1.5.18.jar;F:\repository\com\netflix\hystrix\hystrix-javanica\1.5.18\hystrix-javanica-1.5.18.jar;F:\repository\org\ow2\asm\asm\5.0.4\asm-5.0.4.jar;F:\repository\io\reactivex\rxjava-reactive-streams\1.2.1\rxjava-reactive-streams-1.2.1.jar;F:\repository\org\reactivestreams\reactive-streams\1.0.2\reactive-streams-1.0.2.jar" com.hswg.jstxb.issued.api.advice.instanceoftest
    instanceoftest test case 1: ------------------
    a instanceof A: false
    b instanceof B: false
    /ninstanceoftest test case 2: ------------------
    a instanceof A: true
    a instanceof B: true
    b instanceof A: true
    b instanceof B: true
    /ninstanceoftest test case 3: ------------------
    b2 instanceof A: true
    b2 instanceof B: true
    b2 instanceof C: true
    
    Process finished with exit code 0

    instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。

     

    用法: 某个实例对象      instanceof      某个类名

    instanceof 通常用于根据不同的实例调用不同的方法:

  •  

    一、在有继承关系的类中我们可以通过多态来调用不同实例中的不同方法:

    例1:

      有三个类,类名以及它们之间的关系如下

       Animal (Superclass)     Dog(Subclass)     Cat(Subclass)

       则可得出如下对象

       Animal  animal =new Animal (); ====》animal  instanceof Animal    返回 true

       Dog   dog=new  Dog();====》dog  instanceof  Dog    返回 true

       Cat    cat=new  Cat();====》cat  instanceof  Cat    返回  true

       Animal  dog=new  Dog();====》dog  instanceof  Animal    返回 true

       Animal  cat=new  Cat();====》cat  instanceof  Animal    返回 true

     Animal dog=new Dog();
      Animal cat=new Cat();
      List list = new ArrayList();
    
      list.add(dog);
      list.add(cat);
    
      Iterator it = list.iterator();
      while (it.hasNext()) {
         it.next().animalDo();
    
      }

 在这里我们可以在Dog与Cat类中重写Animal中的animalDo方法,通过调用animalDo方法,然后会自动根据不同的实例调用不同类中的方法.

二、在没有继承关系的类中,我们可以通过instanceof来判断当前实例,然后很据不同实例调用不同方法:

例2:  

 Station s = new Station();
  Cell c = new Cell();

  List list = new ArrayList();

  list.add(s);
  list.add(c);


  Iterator it = list.iterator();
  while (it.hasNext()) {
   Object obj = it.next();
   if (obj instanceof Station ) {
    Station s1 = (Station ) obj;
    s1.stationDo();
   }
   if (obj instanceof Cell ) {
    Cell c1 = (Cell ) obj;
    c1.cellDo();
   }
  }

 在这里我们可以通过instanceof 判断结果,执行不同类中的相应动作方法(stationDo()、cellDo())。

 

一般在使用无泛型的集合(List、set等)时,比较多的使用  instanceof  ,由于集合能够存各种对象,所以在读取时一般要进行相应的判断。

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值