Check if a Class Object is subclass of another Class Object in Java

前端 未结 8 1029
鱼传尺愫
鱼传尺愫 2020-11-28 20:33

I\'m playing around with Java\'s reflection API and trying to handle some fields. Now I\'m stuck with identifying the type of my fields. Strings are easy, just do myFi

8条回答
  •  隐瞒了意图╮
    2020-11-28 21:13

    This is an improved version of @schuttek's answer. It is improved because it correctly return false for primitives (e.g. isSubclassOf(int.class, Object.class) => false) and also correctly handles interfaces (e.g. isSubclassOf(HashMap.class, Map.class) => true).

    static public boolean isSubclassOf(final Class clazz, final Class possibleSuperClass)
    {
        if (clazz == null || possibleSuperClass == null)
        {
            return false;
        }
        else if (clazz.equals(possibleSuperClass))
        {
            return true;
        }
        else
        {
            final boolean isSubclass = isSubclassOf(clazz.getSuperclass(), possibleSuperClass);
    
            if (!isSubclass && clazz.getInterfaces() != null)
            {
                for (final Class inter : clazz.getInterfaces())
                {
                    if (isSubclassOf(inter, possibleSuperClass))
                    {
                        return true;
                    }
                }
            }
    
            return isSubclass;
        }
    }
    

提交回复
热议问题