javaslang List.of() на экземпляре cdi
У меня есть несколько классов с Qualifier, который я создал:
@ServiceComponent(restPath = "/trucks")
public class TruckService {
}
@ServiceComponent(restPath = "/cars")
public class CarService {
}
вот классификатор (не важно для вопроса)
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({TYPE, FIELD})
public @interface ServiceComponent {
public boolean exposeAsRest() default true;
@Nonbinding public String restPath() default "";
@Nonbinding public String restGetPrefix() default "get,find,all";
@Nonbinding public String restPostPrefix() default "create,new,post";
}
в другом классе я внедряю эти экземпляры, используя javax.enterprise.inject.Instance<>
class SomeConfigurationClasss {
@Inject
@ServiceComponent()
Instance<Object> _restComponents;
@Override
public void iterate() throws Exception {
//iterate
for(Object obj : _restComponents){
somefuncion(obj);
}
//List.of(_restComponents)
//.flatMap(obj -> somefuncion(obj));
}
}
если я выполняю "нормальную" итерацию (для...), я получаю объект (TruckService или CarService), заданный в качестве параметра для somefunction ().
но если я использую List.of (...) javaslang, я получаю сам экземпляр. Что я думаю, что это ожидаемое поведение
Есть ли возможность использовать List.of в экземпляре, который может содержать один или несколько bean-компонентов (в зависимости от привязки инъекции). (Я уже пытаюсь вызвать iterator (), select () в экземпляре)
1 ответ
Решение
Instance<T> extends Iterable<T>
поэтому вы должны использовать List#ofAll(Iterable)