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.