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)

Другие вопросы по тегам