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));
  • 相关阅读:
    jquery判断<inpur type="checkbox" checked>是否被选择
    hibernate多对多的更新问题
    关于getHibernateTemplate().get()方法
    springmvc的@ResponseBody报错
    @RequestBody ajax 415 400
    js判断浏览器的类型,动态调整div布局
    平衡树treap 0基础详解
    P1582 倒水 题解
    vscode入门记
    P5025 [SNOI2017]炸弹 题解
  • 原文地址:https://www.cnblogs.com/zeling/p/8494835.html
Copyright © 2011-2022 走看看