BeanManager#resolveは何のために使用するか
JavaEEのBeanManager
を使うと、手動でBeanのインスタンスを取得できますが、その方法について疑問があります。
いくつかの解説記事を見たところ、大枠として次のようなコードでインスタンスを取得するらしいことが分かりました。
Set<Bean<?>> beans = beanManager.getBeans(Hoge.class);
Bean<?> bean = this.beanManager.resolve(beans);
Object instance = beanManager.getReference(bean, Hoge.class, beanManager.createCreationalContext(bean));
Hoge hoge = (Hoge) instance;
ここで、2行目のBeanManager#resolve
は何をしているのでしょうか?
次の書き方と比べて、何が異なりますか?
Bean<?> bean = beans.stream().findFirst().get();
派生クラスがあった場合に何かあるのか? とも考えましたが、だとしても何を以ってSet
から1つだけ取り出すのか分かりません。