zoukankan      html  css  js  c++  java
  • Java对象类型的判断

    instanceof

    判断某个对象是否是某个类的实例或者某个类的子类的实例。它的判断方式大概是这样的:

        public<T> boolean function(Object obj, Class<T> calzz) {
            if (obj == null) {
                return false;
            }
            try {
                T t = (T) obj;
                return true;
            } catch (ClassCastException e) {
                return false;
            }
        }

    Class.equals()

    这种方式比较的类型,一定是本身才返回true,子类或者父类都返回false;

            // B是A的子类,C是B的子类
            B b = new B();
            // false
            System.out.println(b.getClass().equals(A.class));
            // true
            System.out.println(b.getClass().equals(B.class));
            // false
            System.out.println(b.getClass().equals(C.class));

    PS:b.getClass().equals(A.class)等同于b.getClass() == A.class

    Class.isInstance()

    这个方法跟instanceof完全等价。

            // B是A的子类,C是B的子类
            B b = new B();
            // true
            System.out.println(A.class.isInstance(b));
            // true
            System.out.println(B.class.isInstance(b));
            // false
            System.out.println(C.class.isInstance(b));

    Class.isAssignableFrom

    判断某个类是否是另一个类和其子类。

            // B是A的子类,C是B的子类
            // false
            System.out.println(B.class.isAssignableFrom(A.class));
            // true 
            System.out.println(B.class.isAssignableFrom(B.class));
            // true
            System.out.println(B.class.isAssignableFrom(C.class));
  • 相关阅读:
    OpenState: Programming Platform-independent Stateful OpenFlow Applications Inside the Switch
    带状态论文粗读(二)
    In-band Network Function Telemetry
    基于微信小程序的失物招领系统的Postmortem
    OpenStack安装
    Alpha冲刺Day12
    冲刺合集
    Alpha冲刺Day11
    Alpha冲刺总结
    测试总结
  • 原文地址:https://www.cnblogs.com/zeling/p/8494835.html
Copyright © 2011-2022 走看看