All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.org.lidalia.lang.Classes Maven / Gradle / Ivy

package uk.org.lidalia.lang;

/**
 * A collection of methods that could conveniently exist on {@link Class} but don't.
 */
public final class Classes {

    /**
     * @return the generified compile time type of the object
     */
    @SuppressWarnings("unchecked")
    public static  Class getClass(final CompileTimeType object) {
        return (Class) object.getClass();
    }

    /**
     * @return true if one and other are the same type, or one is a subtype of other, or other is a subtype of one
     */
    public static boolean inSameClassHierarchy(final Class one, final Class other) {
        return one.isAssignableFrom(other) || other.isAssignableFrom(one);
    }

    /**
     * @param type the class to check for the existence of the constructor
     * @param parameterTypes the types of the parameters of the constructor
     * @return true if a constructor with those types exists on the class, false otherwise
     */
    public static boolean hasConstructor(final Class type, final Class... parameterTypes) {
        try {
            type.getConstructor(parameterTypes);
            return true;
        } catch (NoSuchMethodException e) {
            return false;
        }

    }

    private Classes() {
        throw new UnsupportedOperationException("Not instantiable");
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy