public static <T> ProvidableField from( Collection<Class<? extends Annotation>> qualifiers, final Field field ) { field.setAccessible( true ); final Typed Inject = field.getAnnotation( Typed.class ); final Class expectedClass = Inject != null ? Inject.value()[0] : field.getType(); return new SingleElementProvidableField<>( field, (Class<T>)expectedClass, createInjectionCondition( qualifiers, field ), new FieldProviderContext( qualifiers, field ) ); }
public static <T> ProvidableField from(Collection<Class<? extends Annotation>> qualifiers, final Field field ) { assertFieldTypeIsIterable( field ); field.setAccessible( true ); final Class collectionType = identifyWhichTypeThisCollectionHas(field); return new ManyElementsProvidableField<>( field, (Class<T>)collectionType, new QualifierCondition<>( qualifiers ), new FieldProviderContext( qualifiers, field ) ); }