provides nfl juice ioc injection guisar google java guice

java - nfl - Guice: ¿Cómo obtengo una instancia de un genérico envuelto en TypeLiteral?



guice vs spring (1)

Tengo una clase de acceso a la base de datos genérica, que estoy vinculando con la construcción TypeLiteral. Ahora, en una prueba, quiero burlarme de esa clase y he creado un Proveedor que crea una instancia simulada. En mi prueba, quiero acceder a ese simulacro para definir su comportamiento. Ahora la pregunta es, ¿cómo puedo recuperar el objeto del inyector?

Esa es mi definición vinculante:

binder.bind(new TypeLiteral<GenericDbClass<Integer>>(){}).GenericDbClassProvider.class);

Normalmente obtendría una instancia como esta:

injector.getInstance(GenericDbClass.class);

Pero como no estoy vinculando la implementación de GenericDbClass a la interfaz, no sé cómo hacerlo. ¿Me parece complicado?

Cualquier idea / ayuda es muy apreciada!


Use la facilidad de Guice''s Key , que está diseñada para este tipo de problemas. En tu caso

injector.getInstance(Key.get(new TypeLiteral<GenericDbClass<Integer>>(){});

Hará el truco.