Mam ogólne klasy dostępu do bazy danych, które wiążę przy użyciu konstruktu TypeLiteral. Teraz w teście chcę wyśmiać tę klasę i dlatego stworzyłem dostawcę, który tworzy fałszywą instancję. W moim teście chcę uzyskać dostęp do tej próby, aby określić jej zachowanie. Teraz pytanie brzmi: jak mogę odzyskać obiekt z wtryskiwacza?Guice: Jak uzyskać instancję generic owiniętego TypeLiteral?
To moja definicja wiążąca:
binder.bind(new TypeLiteral<GenericDbClass<Integer>>(){}).GenericDbClassProvider.class);
Normalnie byłoby uzyskać instancji tak:
injector.getInstance(GenericDbClass.class);
Ale ponieważ nie jestem wiążące realizację GenericDbClass do samego interfejsu, I don Nie wiem jak to zrobić. Czy myślę, że to skomplikowane?
Wszelkie pomysły/pomoc są mile widziane!
Jako rozwiązanie krótkoterminowe właśnie rozszerzyłem ogólny interfejs o konkretną definicję, dzięki czemu mogę teraz uzyskać instancję. Nadal istnieje sposób, aby wykonać zadanie w bardziej ogólny sposób? –