zoukankan      html  css  js  c++  java
  • Class instanceof isInstance

    class Base{}
    class Derived extends Base{}
    class HiDerived extends Derived{}
    /**
     * 2018/09/11 <<thinking in java>> RTTI
     * instanceof Class isInstance 等价性
     * @author zz2108828
     */
    public class Test{
    	static void test (Object x) {
    		System.out.println("-----------Current type: " + x.getClass());
    		System.out.println("x instance of Base " + (x instanceof Base));
    		System.out.println("x instance of Derived " + (x instanceof Derived));
    		System.out.println("x instance of HiDerived " + (x instanceof HiDerived));
    		System.out.println("Base.isInstance(x) " + Base.class.isInstance(x));
    		System.out.println("Derived.isInstance(x) " + Derived.class.isInstance(x));
    		System.out.println("HiDerived.isInstance(x) " + HiDerived.class.isInstance(x));
    		System.out.println("x.getClass() == Base.class "+ (x.getClass() == Base.class));
    		System.out.println("x.getClass() == Derived.class " + (x.getClass() == Derived.class));
    		System.out.println("x.getClass().equals(Base.class) " + x.getClass().equals(Base.class));
    		System.out.println("x.getClass().equals(Derived.class) "+x.getClass().equals(Derived.class));
    		System.out.println("x.getClass().isAssignableFrom(Base.class) " +(x.getClass().isAssignableFrom(Base.class)));
    		System.out.println("x.getClass().isAssignableFrom(Derived.class) " +(x.getClass().isAssignableFrom(Derived.class)));
    		System.out.println("x.getClass().isAssignableFrom(HiDerived.class) " +(x.getClass().isAssignableFrom(HiDerived.class)));
    	}
    	public static void main(String[] args) {
    		test(new Base());
    		test(new Derived());
    	}
    }
    

    -----------Current type: class Base
    x instance of Base true
    x instance of Derived false
    x instance of HiDerived false
    Base.isInstance(x) true
    Derived.isInstance(x) false
    HiDerived.isInstance(x) false
    x.getClass() == Base.class true
    x.getClass() == Derived.class false
    x.getClass().equals(Base.class) true
    x.getClass().equals(Derived.class) false
    x.getClass().isAssignableFrom(Base.class) true
    x.getClass().isAssignableFrom(Derived.class) true
    x.getClass().isAssignableFrom(HiDerived.class) true
    -----------Current type: class Derived
    x instance of Base true
    x instance of Derived true
    x instance of HiDerived false
    Base.isInstance(x) true
    Derived.isInstance(x) true
    HiDerived.isInstance(x) false
    x.getClass() == Base.class false
    x.getClass() == Derived.class true
    x.getClass().equals(Base.class) false
    x.getClass().equals(Derived.class) true
    x.getClass().isAssignableFrom(Base.class) false
    x.getClass().isAssignableFrom(Derived.class) true
    x.getClass().isAssignableFrom(HiDerived.class) true

  • 相关阅读:
    测试开发工资为什么这么高?
    测试开发工程师技能图谱 V1.0 版 | 福利
    完成这 10+ 企业级项目实战,你也能进阶中高级测试开发
    我们准备了50000现金,给爱学习的你!手慢无~
    Git实战(四)| Git分支管理实操,搞定在线合并和本地合并
    公开课|互联网测试技术体系详解&职业发展规划
    测试面试 | 某互联网大厂测试面试真题,你能回答出多少?
    2020 中秋国庆,阖家快乐!
    测试面试 | 某BAT大厂测试开发面试真题与重点解析
    jsp_1
  • 原文地址:https://www.cnblogs.com/--zz/p/9630415.html
Copyright © 2011-2022 走看看