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

com.google.inject.internal.util.Classes Maven / Gradle / Ivy

package com.google.inject.internal.util;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Member;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

import static com.google.common.base.Preconditions.checkNotNull;

/**
 * Class utilities.
 */
public final class Classes {

    public static boolean isInnerClass(Class clazz) {
        return !Modifier.isStatic(clazz.getModifiers())
                && clazz.getEnclosingClass() != null;
    }

    public static boolean isConcrete(Class clazz) {
        int modifiers = clazz.getModifiers();
        return !clazz.isInterface() && !Modifier.isAbstract(modifiers);
    }

    /**
     * Formats a member as concise string, such as {@code java.util.ArrayList.size},
     * {@code java.util.ArrayList()} or {@code java.util.List.remove()}.
     */
    public static String toString(Member member) {
        Class memberType = Classes.memberType(member);

        if (memberType == Method.class) {
            return member.getDeclaringClass().getName() + "." + member.getName() + "()";
        } else if (memberType == Field.class) {
            return member.getDeclaringClass().getName() + "." + member.getName();
        } else if (memberType == Constructor.class) {
            return member.getDeclaringClass().getName() + ".()";
        } else {
            throw new AssertionError();
        }
    }

    /**
     * Returns {@code Field.class}, {@code Method.class} or {@code Constructor.class}.
     */
    public static Class memberType(Member member) {
        checkNotNull(member, "member");

        if (member instanceof Field) {
            return Field.class;

        } else if (member instanceof Method) {
            return Method.class;

        } else if (member instanceof Constructor) {
            return Constructor.class;

        } else {
            throw new IllegalArgumentException(
                    "Unsupported implementation class for Member, " + member.getClass());
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy