On 2 Jul 2013, at 11:28, John D. Ament <john.d.ament(a)gmail.com> wrote:
Hi all
In section 4.2 of the CDI spec (both 1.0 and 1.1) there are references to injection
around generic types. I was wondering if someone could clarify this case?
I have an interface:
public interface Handler<? extends Foo> { ... }
and then I have two implementations
public class FarlowHandler implements Handler<Farlow> { .. }
public class BagelHandler implements Handler<Bagel> { ... }
Is it expected that I should be able to inject references to these by doing:
@Inject
private Handler<Farlow> fHandler;
@Inject
private Handler<Bagel> bHandler;
Yes.
? Is there any expected difference when using EJBs?
Assuming the interface is part of the local client view of the EJB, then no. Obviously, if
EJB has any rules around declaring generic types in local interfaces, then you need to
respect those (IIRC, it doesn't).