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));
  • 相关阅读:
    ajax遍历数组(实现百度搜索提示的效果)
    角色管理的增删改
    String与Date、Timestamp互转
    jquery
    认识拦截器
    验证表单介绍
    什么是struts2?
    如何理解OOP?
    请描述Java中的时间监听机制?
    hibernate3中session.get()与session.load()两个方法的区别?
  • 原文地址:https://www.cnblogs.com/zeling/p/8494835.html
Copyright © 2011-2022 走看看