2017-01-13 33 views
6

próbuję osiągnąć następujący kod Wiosna używając Android adnotacje:Android Adnotacje - Wstrzykiwanie listę nadklasy typu

@Autowired 
public initHandlerList(List<Handler> handlerList) { 
    // Do stuff with the list ... 
} 

Próbowałem przy użyciu zarówno interfejs i klasę. Definicja

Bean:

@EBean 
public AbstractHandler implements Handler {} 

Próbując wstrzykiwać:

@Bean 
public initHandlersList(List<AbstractHandler> handlersList) { 
    // Do stuff with the list ... 
} 

Ale zawsze mam następujący błąd:

Error:(20, 5) error: org.androidannotations.annotations.Bean can only be used on an element annotated with @org.androidannotations.annotations.EBean 

więc myślę, że skoro sama lista nie jest opatrzone @EBean nie może być używany jako Bean ... w żaden sposób zaimplementować to za pomocą Androida Annotati ons?

Dzięki!

+0

może to być pomocne https://github.com/androidannotations/androidannotations/wiki/Enhance-custom-classes – Boldbayar

+0

@Boldbayar Dzięki, ale już przeczytałem ich wiki, nie pokazują nigdzie, jak to zrobić. Wydaje mi się, że nie jest to możliwe z ich szkieletem i będę musiał napisać kod na płycie głównej – Nom1fan

Odpowiedz

2

Niestety nie mogę komentować, ale moja reputacja jest zbyt niska.

Przeczytałem wiki i podczas iniekcji metodycznej zobaczyłem, jak wstrzyknąć fasolę. Co widzę w twoim kodzie, to że faktycznie tworzysz EBean za pomocą obiektu AbstractHandler, ale próbujesz wstrzyknąć obiekt List, który nie został zanotowany przy użyciu @EBean, możesz usunąć Listę <> i po prostu użyć AbstractHandler lub możesz rozszerzyć implementację List (podobnie jak ArrayList) i dodać adnotację do @EBean.

@EBean 
public class InjectableArrayList<T> extends ArrayList<T>{} 

Mam nadzieję, że to pomoże.

+0

Cześć, dziękuję za odpowiedź. To był niezły pomysł, spróbowałem. Ale to, co osiąga, to po prostu wstrzyknięcie pustej listy tablic. Chciałem, aby struktura faktycznie wstawiła listę już wypełnioną instancjami wszystkich klas, które rozszerzają AbstractHandler (tak jak Spring może zrobić). Wygląda na to, że ta struktura nie jest tak potężna jak Spring. Dzięki, doceniam to! – Nom1fan

+1

Rozumiem, tak to osiąga wstrzyknięcie listy bez elementów. Podczas komentowania nie widzę żadnej dokumentacji wyjaśniającej, czy można to osiągnąć. Sprawdziłem dokumenty wtryskowe i wygląda na to, że niczego takiego nie ma. Może to nie jest obsługiwane w tym czasie. Miłego dnia. – Nord