/** * Determines if the given generic type represents a concrete type. * * @param literal The generic type * @return {@code true} if the generic type is concrete; otherwise {@code false} */ public static boolean isConcrete( final TypeLiteral<?> literal ) { return isConcrete( literal.getRawType() ); }
/** * Determines if the given raw type represents an implicit binding. * * @param clazz The raw type * @return {@code true} if the raw type is implicit; otherwise {@code false} */ public static boolean isImplicit( final Class<?> clazz ) { return isConcrete( clazz ) || clazz.isAnnotationPresent( ImplementedBy.class ) || clazz.isAnnotationPresent( ProvidedBy.class ); }