public Class getInterfaceClass()

in src/main/java/org/apache/commons/ognl/enhance/ExpressionCompiler.java [410:454]


    public Class<?> getInterfaceClass( Class<?> clazz )
    {
        if ( "java.util.AbstractList$Itr".equals( clazz.getName() ) )
        {
            return Iterator.class;
        }

        if ( Modifier.isPublic( clazz.getModifiers() ) && clazz.isInterface() || clazz.isPrimitive() )
        {
            return clazz;
        }

        Class<?>[] intf = clazz.getInterfaces();

        for ( Class<?> anIntf : intf )
        {
            if ( List.class.isAssignableFrom( anIntf ) )
            {
                return List.class;
            }
            if ( Iterator.class.isAssignableFrom( anIntf ) )
            {
                return Iterator.class;
            }
            if ( Map.class.isAssignableFrom( anIntf ) )
            {
                return Map.class;
            }
            if ( Set.class.isAssignableFrom( anIntf ) )
            {
                return Set.class;
            }
            if ( Collection.class.isAssignableFrom( anIntf ) )
            {
                return Collection.class;
            }
        }

        if ( clazz.getSuperclass() != null && clazz.getSuperclass().getInterfaces().length > 0 )
        {
            return getInterfaceClass( clazz.getSuperclass() );
        }

        return clazz;
    }